当前位置: 技术问答>linux和unix
keepalive 失效?
来源: 互联网 发布时间:2016-04-25
本文导语: 我在linux下写了个tcp的服务器程序,开了一个线程监听,每一个连接再开一个线程,在每个连接的线程内,收到一个数据就返回另一些数据给客户端。 为防止网线断开的情况,我用keepalive检测,初始化在为每个客户端...
我在linux下写了个tcp的服务器程序,开了一个线程监听,每一个连接再开一个线程,在每个连接的线程内,收到一个数据就返回另一些数据给客户端。
为防止网线断开的情况,我用keepalive检测,初始化在为每个客户端建立的线程内。
可是我拔掉网线不管用。
当只收数,不发数时没事
数据收发都是select方式的。
为防止网线断开的情况,我用keepalive检测,初始化在为每个客户端建立的线程内。
可是我拔掉网线不管用。
当只收数,不发数时没事
数据收发都是select方式的。
|
这个间隔是个kernel参数,比如linux下可以这样来改这个值:
echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time
这样可以把间隔改为1分钟。
echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time
这样可以把间隔改为1分钟。
|
keepalive 应该解决不了你的问题。
keepalive包只有在以下情况才发送:在socket上两个小时没有数据传送。当然也可以改变keepalive包的发送间隔,但是问题是这个间隔一旦改变将影响系统中所有的socket.
传统的做法是使用heartbeat来监测网络是否有问题,你可以搜一下,关于这个的资料很多。
keepalive包只有在以下情况才发送:在socket上两个小时没有数据传送。当然也可以改变keepalive包的发送间隔,但是问题是这个间隔一旦改变将影响系统中所有的socket.
传统的做法是使用heartbeat来监测网络是否有问题,你可以搜一下,关于这个的资料很多。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。