2014-01-19 55 views
1

據我所知,TCP套接字上的Keep-alive有助於瞭解套接字是否不僅僅是打開的,而且兩個套接字之間的連接實際上是活動的。所以,我有幾個問題我想關於保持連接的Winsocks2使用來電諮詢:什麼時候TCP套接字需要保持活動狀態?

  • 當保活選項檢測死插座會發生什麼?

  • 如何在不實際使用 sendrecv的情況下檢查連接是活着還是死亡?如果我必須使用sendrecv功能,然後使用 首先使用保持活動的意義何在?

回答

1

當keep-alive選項檢測到死亡套接字時會發生什麼?

連接重置,任何讀取或寫入都會出現「連接重置」錯誤。請注意,keepalive默認情況下處於關閉狀態,啓用時默認情況下每隔兩小時運行一次。

如何在沒有實際使用send和recv的情況下檢查連接是活着還是死亡?

你不行。 TCP/IP被故意設計爲不具有「撥號音」。它的工作方式好得多。這是爲什麼它取代了像SNA這樣的所有先前協議的主要原因。

如果我必須使用send和recv函數,那麼首先使用keep-alive有什麼意義?

recv()不會告訴你有關斷開的連接。它可能永遠阻止。您可以使用讀取超時,但您必須決定多少時間太多。或者,您可以實現應用程序級PING。

1

保持活動檢測是否在連接的另一端(或物理鏈路,如網絡是向下)的服務器發送郵件之前已經死亡。否則,只有在您實際嘗試發送數據時纔會檢測到斷開連接,如果您的連接由於某種原因而處於空閒狀態可能需要很長時間。

相關問題