2012-03-08 159 views
3

我有一個使用winsock連接到服務器的C++程序,用戶需要定期在很長時間(可能幾周內不需要重新連接)將數據發送到此服務器。winsock連接持續多久?

建立連接時,我發現了很多有關超時的文檔,但我試圖找出建立連接後持續多久。直到任一程序關閉,連接是否持續?我可以連接,然後等待兩個小時發送一些東西?

+0

只要網絡保持運轉,當然。 – 2012-03-08 19:02:25

+0

直到下一個'補丁星期二':)如果沒有「關鍵安全更新」,連接可能會永遠保持打開狀態,就像@BrianRoach所說。 – 2012-03-09 00:22:22

回答

3

沒有明確的連接生存期限制(至少在TCP中)。連接持續到下列之一:

  • 兩個端點(應用)關閉(實際上該連接可以保持在半雙工模式)
  • 中間體實體決定終止連接(如防火牆,NAT或等)

在「現實世界」的互聯網連接通常會在一段時間後強行關閉,特別是如果沒有數據發送。除此之外,根據協議,有些服務器拒絕將連接保持打開狀態(例如http服務器)。

總之:沒有通用的方法來發現連接的生命週期。您完全掌握防火牆,代理(如果適用)和代表服務器。

定期發送一些數據(如保持活動消息)通常會有所幫助。它也有助於檢測到連接已被靜默終止。