TCP正常的断开,通信双方(服务端和客户端)都是能知道的。但是非正常的断开,比如直接拔掉了网线,就只能靠如下两种方法,实现短时间内的检测。

一,心跳包机制

心跳包机制,是网游设计中的常用机制。从用户层面,自己发包去判断对方连线状态。可以根据情况,很灵活的使用。比如,20秒发送一个最小的数据包(也可以根据实际情况稍带一些其他数据)。如果发送没有回应,就判断对方掉线了。

二,利用tcp_keepalive机制

利用TCP的机制,通过设置系统参数,从系统层面,监测tcp的连接状态。以下为linux下的方法:

1,首先查看系统tcp_keepalive相关参数(centos和Ubuntu)

# sysctl -a|grep tcp_keepalive

显示如下:

net.ipv4.tcp_keepalive_intvl = 75

net.ipv4.tcp_keepalive_probes = 9

net.ipv4.tcp_keepalive_time = 7200

分别说一下这三个参数:

tcp_keepalive_time 参数:

是指TCP发送keepalive消息的频度,默认为7200秒,也就是两个小时。

keepalive_intvl 参数:

当探测没有确认时,重新发送探测的频度。默认是75秒。

keepalive_probes 参数:

在认定连接失效之前,发送多少个TCP的keepalive探测包。默认值是9次。

--------------------------------------------------------------------

2,修改系统的tcp_keepalive相关参数

在知道以上三个系统参数的定义和作用之后,我们来修改一下这三个参数:

修改/etc/sysctl.conf文件:

# vi /etc/sysctl.conf

在打开的文件中,加入如下三行:

net.ipv4.tcp_keepalive_intvl = 1

net.ipv4.tcp_keepalive_probes = 1

net.ipv4.tcp_keepalive_time = 5

保存文件。

--------------------------------------------------------------------

3,重启服务器。

# reboot

附注:或者临时使系统设置生效也行:# sysctl -p

--------------------------------------------------------------------

4,修改程序代码部分。

注意:仅仅配置内核参数是不够的,还必须在编程的时候设置套接字的选项,调用函数是

socket.setsockopt(level, optname, value)

示例:

level为SOL_SOCKET的话,选项为SO_KEEPALIVE,值为布尔。

socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, True)

此外还可以设置TCP选项(设置的level为SOL_TCP而不是SOL_SOCKET)覆盖系统全局设置

TCP_KEEPCNT  与tcp_keepalive_probes 对应

TCP_KEEPIDLE 与tcp_keepalive_time 对应

TCP_KEEPINTVL 与tcp_keepalive_intvl 对应

--------------------------------------------------------------------

借鉴文章:

http://blog.sina.com.cn/s/blog_a2d4803001013hrk.html

http://blog.chinaunix.net/uid-23849526-id-274740.html

本文由 CentOS中文站 - 专注Linux技术 作者:centos 发表,其版权均为 CentOS中文站 - 专注Linux技术 所有,文章内容系作者个人观点,不代表 CentOS中文站 - 专注Linux技术 对观点赞同或支持。如需转载,请注明文章来源。

linux tcp 断线检测,CentOS下TCP断线监测相关推荐

  1. linux安装appt服务,Centos下pptd ***搭建

    Centos下pptd ***搭建 *** 服务器ip: 172.16.113.40  *** :10.0.0.1 linux 客户端: 172.16.113.41 一 .***服务器配置 # yum ...

  2. linux locale字符集设置,CentOS下通过locale来设置字符集

    转载:http://www.centoscn.com/CentOS/config/2013/1013/1784.html 在Centos中通过locale来设置程序运行的不同语言环境,locale由A ...

  3. linux cron指定用户,Centos下crontab指定执行用户

    Centos下可以通过配置crontab来定时执行任务,执行体可以是一条系统命令或自己写的一个脚本,同时可以指派用户来执行.配置crontab有两种方法. 方法1.使用crontab命令,例如添加一个 ...

  4. linux vnc服务重启,CentOS下配置VNCServer,重启服务仍然生效

    CentOS下配置VNC Server,重启服务,配置仍然生效的方法: 本文前提:系统已安装好gnome桌面,如果没有请执行下面的命令安装即可. yum groupinstall "Desk ...

  5. linux 单网卡 路由,CentOS下双网卡单网关路由配置

    CentOS下双网卡单网关路由配置 假定主机的网卡1的IP地址为:219.223.244.233/21,网卡2的IP地址为:219.223.242.216/21单网为:219.223.240.1(这里 ...

  6. linux 卸载yum源,CentOS下rpm包与yum安装与卸载更新系统源

    CentOS下rpm包与yum安装与卸载 一.rpm包的安装: 1.安装一个包 # rpm -ivh 2.升级一个包 # rpm -Uvh 3.移走一个包 # rpm -e 4.安装参数 --forc ...

  7. siesta在Linux运行,siesta在centos下编译问题

    新虫求教关于siesta在centos下的编译问题. 配置:centos6.5 ifort, mpi,mkl等用的都是intel composer xe 2016 内含的包.siesta 包使用的是s ...

  8. linux w3m 使用方法,CentOS下安装w3m,及w3m的使用

    centos下安装软件的命令不是apt-get,而是yum,如果安装w3m,利用sudo yum install w3m w3m-img -y即可 △△△△△△△△如果你用的是centos或readh ...

  9. linux pt 下载软件,centos下pt下载软件rtorrent使用

    centos下epel源可直接安装:yum install rtorrent 配置文件.rtorrent.rc :#下载时每个种子的最大连接数 min_peers = 1 max_peers = 50 ...

最新文章

  1. ROS话题通信中创建自定义数据类型的两种方式
  2. ffmpeg 解码rtp方法
  3. 操作系统是计算机软件的核心 它直接监管,华工 网络 操作系统课后作业
  4. 解决GIT代码仓库不同步问题
  5. python中map函数的用法
  6. 云服务器 ECS 建站教程:部署Linux主机管理系统WDCP
  7. 鸿蒙官网首页,鸿蒙官网-鸿蒙手游官网首页最新版预约 v1.0-优盘手机站
  8. android viewflipper 动态加载,Android开发之ViewFlipper自动播放图片功能实现方法示例...
  9. C/C++ Dev-cpp 5.4.0下载安装包,百度网盘
  10. 三连杆机械臂正运动学python模拟——运动学学习(一)
  11. 2022年北京航空航天大学计算机考研复试时间与复试内容
  12. iOS开发 frame与bounds
  13. 中国企业数智化价值不高,主要是因为三个问题
  14. 魅族m15简单开启Usb调试模式的步骤
  15. 计算机审计试题及答案,计算机审计练习题及答案
  16. 全新MN梦奈宝塔主机系统V1.5版本源码
  17. java channel midi_为Java程序中添加播放MIDI音乐功能
  18. 美国要求签证申请人提供社交媒体账号 不给难入境
  19. 【python机器学习基础教程】(四)
  20. 广东侨乡台山人“小年夜”喜用传统沙琪玛祭灶

热门文章

  1. 简述数学建模的过程_数学建模的基本步骤
  2. 用python画爱心再加一行文字_如何理解python一行代码实现一个爱心字符画?
  3. python刷题总结_【python刷题】差分数组
  4. java resume过时方法_面试官没想到,一个 Java 线程生命周期,我可以扯半小时
  5. 地大武汉的计算机网络工程师,2021年中国地质大学(武汉)电子信息(085400)计算机网络与信息安全技术及应用_考研专业目录_考试科目_考试范围 - 学途吧...
  6. java swing调用H5_atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97...
  7. api接口响应类型定义
  8. 服务链路追踪(Spring Cloud Sleuth)
  9. html中的div span和frameset框架标签
  10. java反射机制浅谈