栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Linux:是否存在超时的套接字读取或接收?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux:是否存在超时的套接字读取或接收?

您可以使用setsockopt函数来设置接收操作的超时:

SO_RCVTIMEO

设置超时值,该值指定输入函数完成之前等待的最长时间。它接受一个timeval结构,该结构的秒数和微秒数指定了等待输入操作完成的时间限制。如果接收操作阻塞了这么长时间而没有接收到其他数据,则如果没有接收到数据,它将以部分计数或errno设置为[EAGAIN]或[EWOULDBLOCK]返回。此选项的默认值为零,表示接收操作不应超时。此选项采用timeval结构。请注意,并非所有实现都允许设置此选项。

// LINUXstruct timeval tv;tv.tv_sec = timeout_in_seconds;tv.tv_usec = 0;setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv);// WINDOWSDWORD timeout = timeout_in_seconds * 1000;setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&timeout, sizeof timeout);// MAC OS X (identical to Linux)struct timeval tv;tv.tv_sec = timeout_in_seconds;tv.tv_usec = 0;setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv);

据说在Windows上应该在调用之前完成

bind
。我已经通过实验验证了它可以
bind
在Linux和OS
X 之前或之后完成。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/403015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号