如何检查套接字在一段时间内没有收到

Posted

技术标签:

【中文标题】如何检查套接字在一段时间内没有收到【英文标题】:how to check socket is not receiving for a time period 【发布时间】:2016-04-25 05:00:01 【问题描述】:

在我的应用程序中,两个不同的套接字正在接收和发送周期性数据。如果在特定时间段内没有接收或发送,我需要关闭套接字。由于我使用的是连续流动的周期性数据,因此我之前无法设置发送和接收的数量。请帮我找出套接字在一段时间内没有接收或发送的方式

【问题讨论】:

How to create a Minimal, Complete, and Verifiable example. 还请提供迄今为止为尝试解决手头问题所做的任何研究或尝试。 您可以使用select 在您的套接字上等待 I/O:它接受最长等待时间,因此如果当它返回时没有任何迹象表明预期的 I/O 活动,您可以关闭所涉及的套接字....查看手册页并在谷歌上搜索一些示例,编写代码,如果遇到困难,请返回此处提供代码和具体问题。 【参考方案1】:

使用 SO_RCVTIMEO 在套接字上设置读取超时。如果过期,recv() 将返回 -1 和 errno == EAGAIN/EWOULDBLOCK

【讨论】:

以上是关于如何检查套接字在一段时间内没有收到的主要内容,如果未能解决你的问题,请参考以下文章

window error 10060 由于连接方在一段时间后没有正确答复或者连接主机没有反应,连接尝试失败!

C#异步套接字服务器没有收到来自Java客户端的响应

使用烧瓶socketio经常断开套接字连接

TCP 套接字:recv() 没有收到我的完整数据

监听套接字意外死亡

如何优雅地关闭异步服务器套接字? C#