저는 Linux 컴퓨터에서 실행되는 서버 응용 프로그램이 있습니다. 이 응용 프로그램을 Windows/Linux 컴퓨터에서 연결할 수 있으며 데이터를 보내거나받을 수 있습니다. 몇 시간이 지나면 무언가 발생하고 클라이언트 측에서 다음과 같은 오류가 발생합니다. Windows에서TCP/IP 장기 연결
: An existing connection was forcibly closed by the remote host
Linux의 경우 : 내가 웹에서 검색을 만들어/감소 OS에서의 증가하는 것이 좋습니다 일부 게시물을 발견 Connection timed out
살아 시간을 유지. 그러나, 그것은 나를 위해 일하지 않았다.
이 문제가 발생했거나 강제로 연결을 닫았을 때 서버에 다시 연결해야합니까?
편집 : 나는 상황을 추적했다. 원격 노드에 데이터를 보내고 5 시간 후에 다른 데이터를 보냈습니다. 송신 측은 첫 번째 데이터를 보냈지 만 송신자가 응답하지 않은 두 번째 데이터를 보냈습니다. 재전송 사이의 시간 간격을 증가 시켜서이 5 번 반복 된 발신자의 TCP/IP 스택. 마지막으로 발신자가 연결을 재설정합니다. (Section 4.2를)
- 을 사용하여 TCP/IP setsockopt를을 사용하여 활성 상태를 유지 - (Section 2.4를 참조 어쩌면 때문에 방화벽이나 NAT의) 그러나 나는이 문제를 해결하기 위해 두 개의 서로 다른 접근 방식을 적용 나는 이런 일이 왜 확신 할 수 없다
- 응용 프로그램 수준을 유지하십시오. 첫 번째 방법은 OS와 관련되어 있기 때문에 더 신뢰할 수 있습니다.
이 질문/답변을 읽었습니까? http://stackoverflow.com/questions/2582036/an-existing-connection-was-forcibly-closed-by-the-remote-host – jdiver
지금 읽었습니다. 나는 wireshark를 통해 exchaged 데이터를 추적 할 것이다. –