0
在民意調查方法的MSDN描述,SelectRead選項,解釋時,如果任何條件都成立的返回值將是正確的:Socket.Poll方法在達到超時前返回false的可能原因是什麼?
Listen方法被調用和連接懸而未決。
數據可供閱讀。
連接已關閉,重置或終止。
因爲投票是一個阻塞方法,這是有道理的,該方法將「等待」任何這些條件變成真的,如果達到超時,返回false。
但是在我的應用程序中,我在遇到超時之前遇到'false'返回值。
我想知道導致這種情況的原因是什麼? 有沒有準確的方法知道?
你需要告訴我們你的應用程序代碼,沒有它是不可能有人能夠診斷問題.... –
我在我的代碼中有以下行:'bool hasSomething = mySocket.Poll(pollTime,SelectMode。 SelectRead);'pollTime爲15秒(微秒)。它立即返回(或者可能在〜1秒之後 - 絕對不是15)並且值爲'false'。該代碼來自HTTP客戶端。在發送一個HTTP請求之後,客戶機讀取字節後的響應字節,並且每個字節執行我提到的那一行。然後它運行'Socket.Receive')。它通常運行良好,但有一個服務器和一個特定的URL,導致所提到的調用「民意調查」返回false(並不總是,但非常頻繁)。 – Ayal
也許您的套接字啓用了KeepAlive,並且服務器無法訪問,導致poll因爲某些keepalive數據包被丟棄而返回? –