2011-07-13 52 views
1

我想我的Winsock TCP連接()調用阻塞無限超時。Winsock TCP連接無限超時

問題: 1.我該怎麼做?

  1. 從功能角度來看,我上面所說的願望正是我所需要的。從技術角度來看,這是否是一個壞主意?

謝謝你, 戴夫

回答

2

爲了回答你問題的第二部分:

從功能的角度看,我的上述願望是什麼 我需要的。有沒有從技術角度來看這是一個壞主意,這將是 ?

您只能檢測到斷開的TCP連接和未向您發送任何內容的連接之間的差異(請參閱this answer)。什麼都不讀可能意味着連接被中斷或者沒有任何信息被髮送給你。超時對於檢測(或強制)這種斷開連接非常有用,從而釋放資源。 (您也可以使用TCP Keep-alive來檢測斷開連接,但效果非常類似於超時。)

如果您計劃使用的協議從您希望禁用超時的一方經常寫入,這對你來說可能無關緊要,否則,你可能只是最終陷入了一種情況,那就是你期待着永遠來自另一端的東西(因爲它可能突然間斷開了)。

4

如果你想永遠等待,只重試,如果出了connect倍。

超時對TCP的工作原理非常重要。您可以調整機器的設置(例如,參見Which is the default TCP connect timeout in Windows?),但這不是一個好主意(影響所有TCP連接)。