Ayuda en envio de archivo zip x sockets

ethan_av
08 de Octubre del 2005
Necesito que alguien me heche la mano en enviar un archivo .zip atravez de sockets tengo mi aplicasion cliente y servidor en ellas uso el siguiente codigo para enivar y recibir el archivo.

//Cliente
public int EscribirString(String dato){
try{

DataOutputStream b = new DataOutputStream(c.getOutputStream());
b.writeUTF(dato);
return 1;
}
catch(Exception e){
System.out.println(e);
return -1;
}
}

public int EnviarArchivo(String a){
try{
int BUFFER = 1;
byte datos[] = new byte[BUFFER];
FileInputStream f = new FileInputStream(a);
File file=new File(a);
EscribirInt(1);
EscribirString(file.getName());
int x;
while((x = f.read(datos,0,BUFFER)) != -1)
EscribirString(new String(datos));
EscribirString("EOF");
f.close();
return 1;
}
catch(Exception e){
return 0;
}


//Servidor
public String LeerString() {
try{
String cadena;
DataInputStream b = new DataInputStream(socket.getInputStream());
cadena = b.readUTF();
return cadena;
}
catch(Exception e){
System.out.println(e);
return null;
}
}

public int RecibirArchivo(){
try{
//Se obtiene el nombre del archivo
String NombreArchivo=LeerString();
FileOutputStream f = new FileOutputStream("C:/Ejemplo/" + NombreArchivo);
//CheckedOutputStream csum =new CheckedOutputStream(f, new Adler32());
//ZipOutputStream out =new ZipOutputStream(new BufferedOutputStream(csum));
String cad="";
while(!((cad=LeerString()).equals("EOF")))
f.write(cad.getBytes());
f.close();
return 1;
}
catch(Exception e){
return 0;
}
}


El problema que presenta es que al momento de recibir el archivo el CRC no coincide con el original. Osea llega corrupto.

wwgerald77
08 de Octubre del 2005
Proba con un archivo Zip, y si no resulta trata de enviar el archivo a travez del protocolo FTP que por sierto se lo puede hacer en jaa