dooka
06-06-2005, 16:14
Devo riuscire a inviare un file da un client ad un altro client, questa è il code del client che invia:
socket_client = new Socket(ip_client,porta_client);
File fileGive = new File (dir_upload,nomeFile);
FileInputStream fis = new FileInputStream(fileGive);
OutputStream os = socket_client.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(os);
stream.scriviDOS(socket_client,fileGive.getName());
int fileSize = fis.available();
byte[] fileSend = new byte[fileSize];
String dim = Integer.toString(fileSize);
stream.scriviDOS(socket_client,dim);
System.out.println("Il file e' grande "+dim);
fis.read(fileSend);
bos.write(fileSend);
System.out.println("FILE INVIATO");
e questo è il code del client che riceve:
InputStream is = client_socket.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
String fileToSave = stream.leggiDIS(client_socket);
FileOutputStream fos = new FileOutputStream(fileToSave);
int fileSize = Integer.parseInt(stream.leggiDIS(client_socket));
System.out.println("il file è grande "+fileSize+" bytes");
byte[] leggoFile = new byte[fileSize];
bis.read(leggoFile);
System.out.println("FILE ARRIVATO");
fos.write(leggoFile);
System.out.println("File salvato come "+fileToSave);
fos.close();
il problema è che l'array di byte che invio tra i 2 programmi a volte arriva integro (ultimo byte che parte -39, ultimo byte che arriva -39), altre volte sia in locale che via ip, l'array presenta le ultime celle tutte a 0, nonostante sia partito con l'ultimo valore a -39
da cosa puo dipendere questa cosa?
socket_client = new Socket(ip_client,porta_client);
File fileGive = new File (dir_upload,nomeFile);
FileInputStream fis = new FileInputStream(fileGive);
OutputStream os = socket_client.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(os);
stream.scriviDOS(socket_client,fileGive.getName());
int fileSize = fis.available();
byte[] fileSend = new byte[fileSize];
String dim = Integer.toString(fileSize);
stream.scriviDOS(socket_client,dim);
System.out.println("Il file e' grande "+dim);
fis.read(fileSend);
bos.write(fileSend);
System.out.println("FILE INVIATO");
e questo è il code del client che riceve:
InputStream is = client_socket.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
String fileToSave = stream.leggiDIS(client_socket);
FileOutputStream fos = new FileOutputStream(fileToSave);
int fileSize = Integer.parseInt(stream.leggiDIS(client_socket));
System.out.println("il file è grande "+fileSize+" bytes");
byte[] leggoFile = new byte[fileSize];
bis.read(leggoFile);
System.out.println("FILE ARRIVATO");
fos.write(leggoFile);
System.out.println("File salvato come "+fileToSave);
fos.close();
il problema è che l'array di byte che invio tra i 2 programmi a volte arriva integro (ultimo byte che parte -39, ultimo byte che arriva -39), altre volte sia in locale che via ip, l'array presenta le ultime celle tutte a 0, nonostante sia partito con l'ultimo valore a -39
da cosa puo dipendere questa cosa?