[問題] SO_RCVTIMEO無法對GetQueuedCompletionStatus發生作用
找了一個下午找不到解法,特來請教各位高手
小弟最近正在試驗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