Ciao a tutti!
Sto realizzando un piccolo programma che trasferisce file via socket:in poche parole leggo un file byte per byte, metto questi byte in un array che scrivo sulla socket e li ricevo dall'altra parte.
Parte del codice del client:
Dal lato server invece:codice:Socket socket = new Socket("127.0.0.1", 1234); ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); FileInputStream fis = new FileInputStream("prova.jar"); int x = 0; int i = 0; while((i=fis.read())!=-1)//calcolo la lunghezza esatta del file in modo da creare un array { //ad hoc x++; } while((i=fis.read(buf))!=-1) {}//riempo l'array con i byte del file byte[] buf = new byte[x];//creo l'array che conterrà i byte oos.write(buf);//scrivo sullo stream oos.flush();
Il problema è che l'array è pieno di byte tutti a zero, mentre sono sicuro che il file di partenza pieno! Sto lavorando su dei file .jar, ma siccome mi vengono trasferiti sempre dei byte a zero quando tento di aprire il file scritto dal server mi dice che non riconosce l'estensione. Mi sapreste aiutare?codice:ServerSocket ss = new ServerSocket(SERVER_PORT); FileOutputStream fos = new FileOutputStream("prova.jar"); Socket s = ss.accept(); ObjectInputStream oin = new ObjectInputStream(s.getInputStream());//stream da cui //ricevere i byte byte[] buf = new byte[l];//creo un array in cui mettere byte(la lunghezza è identica a //quello creato nel client oin.read(buf);//leggo i byte dallo stream e li metto nell'array fos.write(buf);//scrivo in un file i byte ricevuti fos.flush();

Rispondi quotando