[問題] SO_RCVTIMEO無法對GetQueuedCompletionStatus發生作用

看板Programming作者 (癢男的迷宮)時間17年前 (2008/05/25 17:41), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
找了一個下午找不到解法,特來請教各位高手 小弟最近正在試驗I/O completion port + winsock2,不過發現一個問題 (可能是winsock的一個bug),原本用setsockopt(...,SO_RCVTIMEO,...) 在blocking mode之上呼叫recv()可以正常實現time-out,但是改用IOCP後 就不行了,MSDN上講WSASocket()帶WSA_FLAG_OVERLAPPED就行了,不過實驗後 發現還是不行: sk = WSASocket(...WSA_FLAG_OVERLAPPED); ... // accept successful setsockopt(sk, SOL_SOCKET, SO_RCVTIMEO, (char*)&time, sizeof(time)); ... WSARecv(...) ... GetQueuedCompletionStatus(...); // 不會因為time-out返回 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 69.93.127.69
文章代碼(AID): #18EJHWKh (Programming)