out non deve essere un FileOutputStream (che è un oggetto atto a scrivere su un file), ma deve essere l'outputstream della socket.... i byte non li devi riscrivere in un nuovo file sul client, ma sulla socket...
Chiaramente, dall'altra parte, il server deve sapere cosa sta ricevendo... quindi non userà più un ObjectInputStream per leggere (non spedisci oggetti, ma byte crudi) ma un DataInputStream o semplicemente l'InputStream della socket, riceverà i byte e li scriverà su un file usando un FileOutputStream.
Lato client:
codice:
FileInputStream fis = new FileInputStream( fileDaInviare );
OutputStream out = socket.getOutputStream();
byte[] buf = new byte[1024];
int read;
while ((read = in.read(buf)) != -1) {
out.write(buf, 0, read);
}
fis.close();
// Se è finito, anche un out.close();
Lato server:
codice:
...
InputStream is = socket.getInputStream();
FileOutputStream fos = new FileOutputStream( fileDaScrivereNelServer );
...
byte[] buf = new byte[1024];
while((buf = is.read()) != -1) {
fos.write(buf, 0, buf.length);
}
fos.close();
// Se è finito, in.close();
Ciao.