Ayuda en envio de archivo zip x sockets
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.
//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.
