2012-03-08 2 views
3

C++에서 서버에 연결하는 winsock을 사용하는 프로그램이있어서 사용자는 아주 긴 시간 (아마도 다시 연결하지 않고 몇 주) 동안이 서버에 주기적으로 데이터를 보내야합니다.Winsock 연결은 얼마나 오래 지속됩니까?

연결을 설정할 때 시간 초과에 대한 많은 설명서를 찾았지만 연결이 설정된 후 연결이 얼마나 오래 지속되는지 알아 내려고합니다. 두 프로그램 중 하나가 종료 될 때까지 연결이 지속됩니까? 연결 후 무언가를 보내기 위해 2 시간을 기다릴 수 있습니까?

+0

네트워크가 계속 켜져있는 한. –

+0

다음 'Patch Tuesday'까지 : 'Critical security updates'가 없으면 @BrianRoach와 마찬가지로 연결이 영원히 열릴 수 있습니다. –

답변

3

명시 적 연결 유효 기간 제한은 없습니다 (TCP 이상). 연결이 지속 중 하나가 될 때까지 다음

    (응용 프로그램) (실제로는 연결이 반이중 모드에 남아있을 수 있습니다)
  • 중간 엔티티는 방화벽, NAT와 연결 (종료하기로 결정 종료
  • 어느 엔드 포인트 등)

"실제"인터넷 연결은 대개 일정 기간 후에 강제 종료됩니다 (특히 데이터가 전송되지 않는 경우). 이 외에도 프로토콜에 따라 일부 서버는 HTTP 서버와 같이 연결을 무기한으로 열어 두지 않습니다.

결론적으로 연결 수명을 확인할 수있는 일반적인 방법은 없습니다. 방화벽, 프록시 (해당되는 경우) 및 서버를 완전히 관리 할 수 ​​있습니다.

정기적으로 일부 데이터를 보내면 (예 : 연결 유지 메시지) 도움이됩니다. 또한 연결이 자동으로 종료되었음을 감지하는 데 도움이됩니다.

관련 문제