【发布时间】:2012-08-01 20:33:20
【问题描述】:
我有一个 WinSock mySocket,它像这样在循环中接收:
while(keepGoing){
FD_SET fsd;
FD_ZERO(&fds);
FD_SET(mySocket, &fds);
int result = select(1+mySocket, &fds, (fd_set *)0, (fd_set *)0, &timeout);
if(result>0 && FD_ISSET(mySocket, &fds){
result = recvfrom(mySocket, buff, NUM_BYTES, (struct sockaddr *)&add, &length);
// do stuff
}
}
如果我想停止接收,我可以将 keepGoing 设置为 false,但套接字可能仍在等待 timeout,然后才能看到 keepGoing 已更改。
假设我们不想改变超时的值,有没有可靠的方法告诉套接字停止接收而不等待超时发生?
【问题讨论】:
标签: c++ sockets timeout winsock