2011-04-27 4 views
2

내가 연결이 아직 살아 있는지 확인하기 위해 sendUrgentData() 무효를 사용하는 것을 시도하고있다 던졌습니다. 이 void를 통해 전송되는 데이터는 서버 측에서 무시되지만 연결이 끊어지면 sendUrgentData는 클라이언트 측에서 SocketException을 발생시킵니다.자바 무효 sendUrgentData()는 SocketException이

이렇게해야합니다. 연결이 아직 완벽하게 살아있을 때 그러나 sendUrgentData 여러 번 호출 후에는 SocketException이 연결을 끊고 던져 것 같다

java.net.SocketException: Connection reset by peer: send 

나는 스니퍼로 네트워크 트래픽을 확인하고 리셋 패킷을 보내지 않을 것을 발견했다. 어떻게 해결해야합니까? 이 데이터를 스트림에 현재있는 데이터가 손상되지 않도록 일반적인 방법으로 보내지 않으려 고합니다.

답변

1

전송 된 데이터는 무시되지 않으며 Java로 작성된 경우 서버에서 인라인으로 읽습니다. 따라서 아마도 프로토콜 오류가 발생했을 것입니다. 피어에 의한 연결 재설정은 피어에 의해 이미 닫힌 연결에 작성한 것입니다. 아마도 프로토콜 오류에 대한 응답으로.

+1

그게 내가 생각한 것도 있지만, 네트워크 트래픽을 확인한 후 RST 플래그가 붙은 패킷을 보면서 궁금해지기 시작했다. 오늘 다시 확인했는데 리셋 패킷을 놓쳤다. 어리석은 나 =). 나는 당신의 도움에 감사합니다. –

+0

@ThomasSmith 여기에 해결책을 게시 해 주시겠습니까? 감사 – TheRealChx101

0

Socket#sendUrgentData()은 기본 구현이 긴급 데이터 전송을 지원하지 않는 경우 SocketException을 던집니다. 메모리에서 Java 1.6의 소켓 예외 메시지 설명은 '긴급 데이터가 지원되지 않습니다.'와 유사합니다.

  • 실행중인 플랫폼 (Windows, Linux 등)은 무엇입니까?

  • 사용중인 Java 버전은 무엇입니까?

+0

Windows 7 64 비트에서 Java 1.6_24를 사용하고 있습니다. 내가 얻는 오류 메시지는 _Connection이 피어에 의해 재설정 된 것 외에는 아무 것도 말하지 않습니다. send_ –

+0

Javadoc에서 말하는 내용이 아닙니다. 거기에 어떤 구현은 그것을 지원하지 않을 수 있다는 힌트가, 그리고 내가 본 적이없는 TCP/IP의 구현을 본 적이 없어요. – EJP