我如何检测在Linux上的TCP死连接?

我如何检测在Linux上的TCP死连接?,第1张

概述我如何检测在Linux上的TCP死连接

我在C上编写了一个程序,在这个程序里,客户端向服务器发送了一次信息。 我使用TCP套接字。有一段时间服务器计算,应该发送结果给客户端。 如何检测服务器或客户端上的连接是否中断?

聚集windows事件查看器事件

如何在后面的代码中更改VirtualizingStackPanel的方向?

用于公用Datatable的C#SQL查询

加载一个DLL不止一次?

C / C ++ windows – ExtractIcon()不检索所有可执行文件的图标

你可能想尝试TCP Keepalive。

# cat /proc/sys/net/ipv4/tcp_keepalive_time 7200 # cat /proc/sys/net/ipv4/tcp_keepalive_intvl 75 # cat /proc/sys/net/ipv4/tcp_keepalive_probes 9`

在上面的例子中,TCP保活定时器在7200秒的空闲时间后启动。 如果保持活动消息不成功,则以75秒为间隔重试。 连续9次重试失败后,连接将被关闭。

可以在启动时通过将启动脚本放置在/etc/init.d来修改存活时间。

我知道一个确定TCP连接已经死亡的程序的唯一方法是尝试发送一些东西。 尝试将超时或返回一个错误条件。 因此,该程序不需要做任何特别的事情 – 只要发送它设计的东西发送。 但是,它确实需要处理所有可能的错误情况。 如果超时,可能会在有限的时间内重试,或者确定连接已经死亡。 如果多次发送相同的数据将是有害的,后一种情况是适当的。 在此或错误情况之后,程序应关闭当前连接,并在适当情况下重新建立连接。

TCP Keep-Alive是确定对等体是否死亡的可靠方法。也就是说,如果对等应用程序退出而没有正确关闭打开的TCP连接。

http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overvIEw.HTML

了解如何使用setsockopt调用为每个套接字启用tcp keep-alives(SO_KEEPAliVE)。

另一种方法是客户端和服务器应用程序定期检测心跳。 没有到达心跳应该表明对方已经死亡。

总结

以上是内存溢出为你收集整理的我如何检测在Linux上的TCP死连接?全部内容,希望文章能够帮你解决我如何检测在Linux上的TCP死连接?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1267631.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存