我有一个mySocket
像这样在循环中接收的 WinSock:
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
已经改变。
假设我们不想更改超时值,有没有可靠的方法告诉套接字停止接收而不等待超时发生?