- Desde
- 24 Nov 2011
- Mensajes
- 2.815
Que tal betas, espero que algún programador java pueda ayudarme.
Tengo el siguiente código:
CLIENTE
SERVIDOR
Pero solo se ejecuta bien el primer ciclo.
Es decir, el primer archivo de la lista sí es recibido por el servidor, pero al momento de finalizar ese ciclo y comenzar el siguiente me arroja una excepción:
Exception in thread "main" java.io.UTFDataFormatException: malformed input around byte 4
....
at Servidor_ftp.main(Servidor_ftp.java:26)
La línea 26 es:
Así que obviamente esta teniendo problemas al leer esos bytes con la función readUTF, pero dado que los mismos son enviados desde el cliente con un writeUTF...
Cachandola con un try catch, el stack Trace es el siguiente:
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readUTF(DataInputStream.java:609)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at Servidor_ftp.main(Servidor_ftp.java:28)
Esa linea de nuevo es:
(cambio de la 26 a la 28 por el try..)
¿Alguien sabe qué podría ser y como solucionarlo?
Te convoco [MENTION=9679]cicklow[/MENTION]
---------- Post agregado el 26-ago-2013 hora: 16:06 ----------
D:
¿Nadie sabe sockets?
Tengo el siguiente código:
CLIENTE
Insertar CODE, HTML o PHP:
for (int i = 0; i < num_archivos; i++) { int b_leidos;
nom_archivo = archivos[i].getName();
tam_archivo = archivos[i].length();
dos.writeUTF(nom_archivo);
dos.writeLong(tam_archivo);
bis = new BufferedInputStream(new FileInputStream(archivos[i]));
tam_bloque = (bis.available() >= 1024) ? 1024 : bis.available();
tam_arch = bis.available();
while ((b_leidos = bis.read(buf, 0, tam_bloque)) != -1 && leidos < tam_archivo) {
bos.write(buf, 0, b_leidos);
bos.flush();
leidos += tam_bloque;
tam_bloque = (bis.available() >= 1024) ? 1024 : bis.available();
completados = (leidos * 100) / tam_arch;
System.out.print("B_Leidos:" + b_leidos + " Leidos: " + leidos + " Tamaño de Archivo: " + tam_archivo);
}
completados = 0;
leidos = 0;
}
SERVIDOR
Insertar CODE, HTML o PHP:
for (int i = 0; i < num_archivos; i++) { int b_leidos;
nom_archivo = dis.readUTF();
tam_archivo = dis.readLong();
long temp = tam_archivo;
bos = new BufferedOutputStream(new FileOutputStream("Recibidos/" + nom_archivo));
tam_bloque = (int) ((tam_archivo >= 1024) ? 1024 : tam_archivo);
while ((b_leidos = bis.read(buf, 0, tam_bloque)) != -1 && leidos < tam_archivo) {
bos.write(buf, 0, b_leidos);
bos.flush();
leidos += b_leidos;
temp -= b_leidos;
tam_bloque = (int) ((temp >= 1024) ? 1024 : temp);
completados = (leidos * 100) / tam_archivo;
System.out.print("B_Leidos:" + b_leidos + " Leidos: " + leidos + " Tamaño de Archivo: " + tam_archivo);
}
completados = 0;
leidos = 0;
System.out.println("-----------------------");
}
Pero solo se ejecuta bien el primer ciclo.
Es decir, el primer archivo de la lista sí es recibido por el servidor, pero al momento de finalizar ese ciclo y comenzar el siguiente me arroja una excepción:
Exception in thread "main" java.io.UTFDataFormatException: malformed input around byte 4
....
at Servidor_ftp.main(Servidor_ftp.java:26)
La línea 26 es:
Insertar CODE, HTML o PHP:
nom_archivo = dis.readUTF();
Así que obviamente esta teniendo problemas al leer esos bytes con la función readUTF, pero dado que los mismos son enviados desde el cliente con un writeUTF...
Cachandola con un try catch, el stack Trace es el siguiente:
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readUTF(DataInputStream.java:609)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at Servidor_ftp.main(Servidor_ftp.java:28)
Esa linea de nuevo es:
Insertar CODE, HTML o PHP:
nom_archivo = dis.readUTF();
(cambio de la 26 a la 28 por el try..)
¿Alguien sabe qué podría ser y como solucionarlo?
Te convoco [MENTION=9679]cicklow[/MENTION]
---------- Post agregado el 26-ago-2013 hora: 16:06 ----------
D:
¿Nadie sabe sockets?