我在寫一個使用I/O完成端口的小型服務器客戶端。GetQueuedCompletionStatus在遠程套接字關閉時返回ERROR_NETNAME_DELETED
我通過AcceptEx在我的完成端口上成功連接服務器和客戶端。 客戶端連接後,客戶端套接字與完成端口關聯,並且調用該套接字上的WSARecv的重疊調用。
一切正常,直到我關閉客戶端測試程序。 GetQueuedCompletionStatus()
回報FALSE
和GetLastError
回報
ERROR_NETNAME_DELETED
,這是有道理的,我(後來看了MSDN上的描述)。
但我的問題是,我認爲呼叫GetQueuedCompletionStatus
會返回一個數據包,指示由於套接字關閉而導致的故障,因爲WSARecv
會返回適當的返回值。 由於這不是這種情況,我不知道哪些客戶端的套接字造成的錯誤,並不能以我需要的方式行事(釋放結構,清除這個特定的連接等)...
任何關於如何解決這個問題,還是提示?
謝謝:)
編輯:http://codepad.org/WeYINasO < - 負責代碼...「錯誤」在開始的while循環(通話到GetCompletionStatus()
第一功能是隻對GetQueuedCompletionStatus時的包裝occures(在其他情況下)工作正常)沒有將它張貼在那裏,因爲它看起來低劣&凌亂在這裏]
您能告訴我們一些代碼嗎? – 2011-03-29 15:49:49
你需要哪部分?如果(GetQueuedCompletionStatus()== FALSE)或GetLastError-Part? hahahaha;)... 那麼...說實話...哪個部分? ......從我的角度來看,沒有任何意義,因爲它是一個固有的東西,據我所見 – Incubbus 2011-03-29 15:55:42
你在那裏做出了一個很大的假設。你需要幫忙嗎? – 2011-03-29 16:08:36