首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Winsock接受超时

Winsock接受超时
EN

Stack Overflow用户
提问于 2012-03-13 11:45:49
回答 2查看 9.3K关注 0票数 4

在使用阻塞winsockets时,是否可以将超时设置为接受函数?就像我们可以通过setsockopt来恢复和发送功能一样?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-13 11:54:06

选择函数可以与超时一起使用。尽管select是最常用的非阻塞套接字,但我没有读到任何阻止传递阻塞套接字来选择的内容。如果select函数超时,则行为等效于接受超时。

来自MSDN

“参数readfds标识要检查可读性的套接字。如果套接字当前处于侦听状态,则如果接收到传入连接请求,保证在不阻塞__的情况下完成连接请求,则该套接字将被标记为可读。对于其他套接字,可读性意味着队列数据可用于读取,从而保证不阻塞对recv、WSARecv、WSARecvFrom或recvfrom的调用。”

这应该会给你你期待的行为。

票数 7
EN

Stack Overflow用户

发布于 2012-03-13 12:31:34

很容易安排另一个线程在超时后关闭侦听套接字。创建一个自动重置事件,并在accept()返回时发出信号。在带超时间隔的循环中使用WaitForSingleObject()编写一个等待事件的函数。如果WFSO返回任何不是WAIT_OBJECT_0的内容,请关闭侦听套接字并退出。在输入accept()循环之前,创建一个线程来调用函数。

另一种可能是使用acceptEx()并在作为重叠结构的hEvent传递的事件上等待WFSO()超时。如果超时触发,请使用CancelIo()从网络IO系统中删除排队的acceptEx()完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9683358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档