IOException em sockets

4 respostas
G

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:

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();

4 Respostas

cv1

Posta o stack trace, please? :slight_smile:

G

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]
cv1

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())

G

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.

Criado 8 de outubro de 2003
Ultima resposta 9 de out. de 2003
Respostas 4
Participantes 2