2011-07-06 5 views
0

Java 클라이언트 응용 프로그램을 가지고 놀았습니다. 행동이 게시물 (및 기타)과 매우 유사합니다 :클라이언트 예외 : 소프트웨어 연결이 끊어짐 : recv failed

java.net.SocketException: Software caused connection abort: recv failed

내가 답을 찾을 수없는 한 아직까지 - 따라서이 게시물을. 나는 무엇이 잘못 되었는가하는 생각을 가지고 있지만 그것에 대해 무엇을해야할지 모르겠습니다.

프로토콜은 간단합니다. 일부 데이터를 읽고, ACK를 보내고 반복합니다 (terminted까지).

나는 WireShark에서 무슨 일이 일어나고 있는지보고 있었고, TCP 창이 가득 찬 것 같습니다. 내가 DataOutputStream (ACKs)에 대한 플러시()를 수행하고 있지만 잠시 후에 사실을 변경하지 않습니다. (WireShark에서 Java 예외 이전에 항상 창 문제가 있음을 알 수 있습니다.) .

그래서 내 TCP 창/버퍼가 분명하다 (문제의 근본 원인은 무엇인가?) Java에서 확인하는 방법은 DataInputStream에 플러시되지 않는 것 같습니다. TCP 스택이 가득 찼다는 것을 읽었을 지 모를 일이 생길 수 있습니다. 나는 기본적인 코드를 첨부했습니다

많은 감사

마크는 아래 전화 :

 public void connectToServer() 
{ 
    //Create socket connection  
    try 
    { 
     if (lSocket == null) 
     { 
      lSocket = new Socket("localhost", 7651); 
      lSocket.setSoTimeout(0); 
      lInDataStream = new DataInputStream(lSocket.getInputStream()); 
      lOutDataStream = new DataOutputStream(lSocket.getOutputStream()); 
     } 
    } 
    catch (UnknownHostException e) 
    { 
     System.out.println("Unknown host: localhost"); 
    } 
    catch (IOException e) 
    { 
     System.out.println("No I/O"); 
    }  
} 

public void readSocket() throws IOException 
{ 
    //Receive data from ROS SerialtoNetwork server 
    if (lSocket != null) 
    { 
     lInDataStream.readInt();  
     lInDataStream.readFully(cbuf); 

     lOutDataStream.writeBytes("Ack"); 
     lOutDataStream.flush(); 

     //String lstr = new String(cbuf); 
     //System.out.print(lstr); 
     //System.out.println(""); 
    } 
} 

public String getDataBuffer() 
{ 
    String lstr = new String(cbuf); 
    return lstr; 
} 
+0

캡처 파일을 추가 할 수 있습니까? – nc3b

+0

가능한 복제본 [java.net.SocketException : 소프트웨어로 인해 연결이 중단되었습니다 : recv failed] (http://stackoverflow.com/questions/135919/java-net-socketexception-software-caused-connection-abort-recv-failed) – EJP

답변

0

이 영구 네트워크 오류를 나타냅니다. 이 오류에 대한 MSDN 문서가 여러 번 (반복적으로) 있습니다 (예 : this one.

+0

링크는 어떻습니까? –

+0

@KevinWong 물론 편집을 참조하십시오. – EJP

관련 문제