문제

나는 C#프로그램이 실행한다.를 통해 연결된 TCP/IP socket 하는 기계를 재고 무역을 실행하고 있습니다.

최근,내가 하려고 했 배포하는 일부의 컴퓨터에 새로운 데이터 센터 뒤에 있는 하드웨어 방화벽,그리고 나는 보이기 시작한 어떤 이상한 질병 연결합니다.

때 dis 연결 발생에서,내 응용 프로그램(클라이언트 측면),나는 아무것도 특이한 것을 제외하고 내가 받지 않을 통한 데이터 소켓에.Wireshark 을 확인하는 데이터가 없을 도달하기 소켓 및 내 응용 프로그램의 받는 스레드가에서 차단 Receive()호출할 때 나는 중지에 디버거.소켓으로 표시에 설립되 netstat.

그러나 서버에서 측처럼 클라이언트가 dis 연결했습니다.을 보고 자신들의 로그,그것은 다음과 같 소켓에 자신의 끝 일반적으로 끝까지 하나와 함께(nRecvd=-1,errno=104)또는(nRecvd=0,errno=11).(104 피어에서 다시 연결).

Dis-만 연결을 것으로 보인 후기간의 활동입니다.내가 이것을 해결을 위해 지금 구현을 통해 심장 박동 사이 클라이언트와 서버는 그냥 보내는 짧은 메시지는 모든 20 초고,답변을 드리겠습니다이로 인해 질병을 연결해 드롭 0 지난 몇 일입니다.

처음에는 제가 생각하는 하드웨어 방화벽이었는 문제입니다.그것이 원인이 되었다는 소켓을 시간 후에서 활동입니다.하지만 사람에료는 방화벽의 주장하는 시간을 연결하는 이 포트에서(8887)은 2160 분입니다.

나는 Windows Server2003.NET3.5.거래 서버가 리눅스 기계(sles9 믿지만 나는 확실하지 않).

어떤 아이디어에 할 수 있습니다 무엇일까요?나는 무엇을 할 수 있을 디버깅하이 더 주어진 것 없어서요 액세스를 방화벽 로그와 아무를 변경하는 기능 코드에서는 무역 서버?

감사합니다, 마

도움이 되었습니까?

해결책

당신은 무엇을 설명하는 것은 일반적이고,그것의 일반적인 구현에는 심장 박동을 유지하 TCP 소켓을 통해 이러한 방화벽/게이트웨이었습니다.

는 하드웨어 있을 수 있습 하드 2160 분 시간 제한(내 경험에 20~30 분 더 일반적입니다하지만),그 연결은 일반적으로 떨어졌다 훨씬 더 적극적으로 있다면 어떤 종류의 짐입니다.이러한 방화벽을 제한된 리소스,그리고 그들이 필요로 할 때 더 연결 추적 그들이 떨어지는 경향이 있는 가장 오래된 연결을 추적 없이 모든 활동에 관계 없이 열심히 제한 시간을 설정합니다.

디버깅하려는 경우 이상,이동 냄새를 서버측에서의 방화벽이 어우 anyting,때 발생하는 서버에 연결 끊기

다른 팁

나는 설정 wiresharp 의 양쪽 모두에서 방화벽이 어떻게 볼 TCP(낮은 레벨).을 때는 관리자를 말한다"제한 시간을 연결"무언가이다.는 시간 초과한 유휴 상태에 설립된 연결?아무것도 다른 어떤 의미를 만들지 않는 것 같아요.

또한,당신은 당신을 사용하여 KeepAlive 옵션 TCP?그리고는여 전송되는 방화벽 또는지?

내가 말했듯이,아마를 실행하고 싶 wireshark 양측에는 방화벽의...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top