2013-09-24 3 views
0

먼저 서버를 시작한 다음 모든 클라이언트가 완벽하게 작동하지만 클라이언트를 먼저 시작한 다음 서버를 시작할 때 (svr이 충돌 할 때 클라이언트가 연결할 수 있는지 확인한 다음 클라이언트는 서버에 연결하지만 2,3 초 후 SocketException : Connection reset을 던집니다. 나는 그것을 일으키는 원인을 알지 못한다. 누군가 내가 이것을 이해하도록 도울 수 있다면 나는 정말로 그것을 호소 할 것이다.SocketException : 다시 연결 후 연결 재설정

클라이언트 처리

서버 코드 : 서버에 연결

public ServerHandler(Socket socket){ 
    try{ 
     pw = new PrintWriter(socket.getOutputStream()); 
     writerHolder[userCounter] = pw; 

     InputStreamReader in = new   InputStreamReader(socket.getInputStream()); 
     reader = new BufferedReader(in); 


     userCounter++;// Increment the number of people connected 

    }catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
} 

클라이언트 코드 :

private void startConnection() 
{ 
    try 
    { 
     sock = new Socket("192.168.1.5", 5000); 
     InputStreamReader input = new InputStreamReader(sock.getInputStream()); 
     reader = new BufferedReader(input); 
     pw = new PrintWriter(sock.getOutputStream()); 
     JOptionPane.showMessageDialog(null, "Connected to the server!"); 

    }catch(IOException ex) 
    { 
     //timer.reconnectTimer(20); 
     ex.printStackTrace(); 
    } 
} 

스택 트레이스 :

java.net.SocketException: Connection reset 
at java.net.SocketInputStream.read(Unknown Source) 
at java.net.SocketInputStream.read(Unknown Source) 
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) 
at sun.nio.cs.StreamDecoder.implRead(Unknown Source) 
at sun.nio.cs.StreamDecoder.read(Unknown Source) 
at java.io.InputStreamReader.read(Unknown Source) 
at java.io.BufferedReader.fill(Unknown Source) 
at java.io.BufferedReader.readLine(Unknown Source) 
at java.io.BufferedReader.readLine(Unknown Source) 
at homeControl.ServerHandler.run(ServerHandler.java:52) 
at java.lang.Thread.run(Unknown Source) 
+0

'ServerHandler.java : 52'는 어디에 있나요? 또한, 나는'readLine' 호출을 보지 못했습니다. – Pietu1998

+0

예외를 throw하는 사람은 서버 또는 클라이언트입니까? – Joni

+0

@ Pietu1998 이것은 단지 코드 단편입니다. – dHoja

답변

1

"연결 재설정은"보통 것을 의미한다을 원격 측은 보낸 데이터를 읽지 않고 소켓 측면을 닫았습니다. 소켓을 닫기 전에 전송 된 데이터를 읽어야합니다.

+0

솔직히 말하면 소켓을 전혀 닫지 않습니다. 어떻게해야합니까? 감사. – dHoja

+0

그러면 프로그램이 종료 될 때 연결이 os에 의해 닫히고 프로그램이 전송 된 데이터를 읽지 않은 경우 연결이 재설정됩니다 – Joni

관련 문제