Windows套接字具有此select功能.您将套接字句柄和套接字传递给它以检查是否具有可读性和超时,并返回告知套接字是否可读或是否已达到超时.
请参阅:http://msdn.microsoft.com/en-us/library/ms740141(VS.85).aspx
这是怎么做的:
bool readyToReceive(int sock, int interval = 1)
{
fd_set fds;
FD_ZERO(&fds);
FD_SET(sock, &fds);
timeval tv;
tv.tv_sec = interval;
tv.tv_usec = 0;
return (select(sock + 1, &fds, 0, 0, &tv) == 1);
}
Run Code Online (Sandbox Code Playgroud)
如果它返回true,则下一次调用recv应立即返回一些数据.
您可以通过检查select错误返回值并在这些情况下抛出异常来使其更加健壮.在这里我只是返回,true如果它说一个句柄准备好读,但这意味着我false在所有其他情况下返回,包括套接字已经关闭.
| 归档时间: |
|
| 查看次数: |
5914 次 |
| 最近记录: |