作者id2007 (痒男的迷宫)
看板Programming
标题[问题] SO_RCVTIMEO无法对GetQueuedCompletionStatus发生作用
时间Sun May 25 17:41:51 2008
找了一个下午找不到解法,特来请教各位高手
小弟最近正在试验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