Salve,
sto scrivendo un programmino per trasferire files da un pc all'altro!
Nel momento in cui dal programma di upload faccio partire appunto l'upload del file (programma client) nel programma server, che dunque è in attesa mediante il metodo readObject(), viene lanciata la seguente eccezione:
(mensionata chiamando nel catch e.printStackTrace())
codice:java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:168) at java.net.SocketInputStream.read(SocketInputStream.java:182) at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2249) at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2542) at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2552) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readFatalException(ObjectInputStream.java:1968) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1332) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at ReceiveFiles.main(ReceiveFiles.java:69)
Vi posto quello che c'è nella riga 69 e nei suoi dintorni:
Naturalmente se il programma comprende anche questa riga "String fileName = (String) inFromUploader.readObject();" l'eccezione viene lanciata prima, esattamente quando l'esecuzione raggiunge questo punto! In questo caso dovrebbe leggere un oggetto di tipo String!codice:try { portServer = new ServerSocket(port); while(true) { client = portServer.accept(); if(client != null) { System.out.println("Pronto a ricevere un file"); inFromUploader=new ObjectInputStream(client.getInputStream()); try { System.out.println("\nFile da ricevere: ?"); String fileName = (String) inFromUploader.readObject();// anche qui ottengo la stessa eccezione File f = new File(fileName); if(!f.exists()) f.createNewFile(); //file verranno scritti i bytes Packet pac = null; scriviInFile = new FileOutputStream(f); byte[] tmp = null; while((pac=(Packet)inFromUploader.readObject()) != null) //riga 69 { //ecc..
Nella riga 69 invece dovrebbe ricevere un oggetto creato da me di tipo Packet (classe implementata anche lato client)
Ecco la classe:
Non capisco perchè da questi errori!codice:class Packet { byte[] bytes; String mex; public Packet(byte[] array, String message) { this.bytes=array; this.mex=message; } public byte[] getBytes() { return this.bytes; } public String getMessage() { return this.mex; } }

Rispondi quotando
