IOException em sockets

Estou tentando enviar um arquivo de um cliente para um servidor socket e consigo a transferência quando executo o servidor e o cliente na mesma maquina ,porem ,quando o faço em maquinas diferentes levanta IOException no servidor , alguém pode me dizer oq está acontecendo ?

server:

conexao = server.accept();
		
output = new ObjectOutputStream(conexao.getOutputStream());
output.flush();
       
input = new ObjectInputStream(conexao.getInputStream());
	        	        
String conectou = "conectado";
output.writeObject(conectou);
output.flush();
       
       try{	     
            File message = (File) input.readObject();  //erro acontece aqui!!!!!
            FileInputStream in = new FileInputStream(message);
            BufferedInputStream bufIn = new BufferedInputStream(in); 
            File output2 = new File("d:/barata2.exe");
            System.out.println("4");
            FileOutputStream out = new FileOutputStream(output2);

cliente:

[code]

ObjectOutputStream output;
ObjectInputStream input;

    File arq = new File("d:/george/java/Sockets/teste/barata.exe"); 

client = new Socket("10.100.0.2",4444);

output = new ObjectOutputStream(client.getOutputStream());
output.flush();
        
input = new ObjectInputStream(client.getInputStream());
try{
String message = (String ) input.readObject();
System.out.println(message); 
           }catch(IOException io){
           }catch(ClassNotFoundException cnfe){}
String foi = "chegou ?";         

output.writeObject(arq);
output.flush();[/code]

Posta o stack trace, please? :slight_smile:

Aqui está o stack trace:

[size=“10”]java.net.SocketException: Connection reset by peer: JVM_recv in socket input str
eam read
at java.net.SocketInputStream.socketRead(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:86)
at java.net.SocketInputStream.read(SocketInputStream.java:102)
at java.io.ObjectInputStream.peekCode(ObjectInputStream.java:1549)
at java.io.ObjectInputStream.skipToEndOfBlockData(ObjectInputStream.java
:1479)
at java.io.ObjectInputStream.inputClassDescriptor(ObjectInputStream.java
:927)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:366)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1186)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
at server.main(server.java:32)[/size]

Connection reset by peer acontece quando vc fecha a conexao e o outro lado estava esperando por uma leitura. Nesse caso, o cliente fechou a conexao enquanto o servidor estava tentando ler o objeto (estava parado no ObjectOutputStream.readObject())

como resolvo isto ? como faço para que o cliente não feche a conexão antes que o servidor receba todo o arquivo ?

obg.