Winsock接受超时

Ale*_*ecs 4 c sockets windows winsock

使用阻塞winsockets时是否可以设置超时接受函数?就像我们可以通过setsockopt来recv和发送函数一样?

似乎不可能,但我想确保.

Jay*_*Jay 7

选择功能可以与超时一起使用.虽然,select最常用于非阻塞套接字,但我没有读过阻止传递阻塞套接字来选择的东西.如果select函数超时,那么您的行为等同于accept timeout.

来自MSDN

"参数readfds标识要检查的套接字的可读性.如果套接字当前处于监听状态,如果收到传入的连接请求,它将被标记为可读,以确保接受完成而不会阻塞.对于其他套接字,可读性意味着排队数据可供读取,以保证对recv,WSARecv,WSARecvFrom或recvfrom的调用不会阻塞.

这应该会给你你期望的行为.