linux下TCP keepalive 属性设置
2008-09-04 14:32
387 查看
0
顶一下
Linux操作系统下TCP keepalive属性查看
不容错过的IBM集群技术资源汇总
Tcp是面向连接的,在实际应用中通常都需要检测连接是否还可用.如果不可用,可分为:
a. 连接的对端正常关闭.
b. 连接的对端非正常关闭,这包括对端设备掉电,程序崩溃,网络被中断等.这种情况是不能也无法通知对端的,所以连接会一直存在,浪费国家的资源.
tcp协议栈有个keepalive的属性,可以主动探测socket是否可用,不过这个属性的默认值很大.
全局设置可更改/etc/sysctl.conf,加上:
在程序中设置如下:
在程序中表现为,当tcp检测到对端socket不再可用时(不能发出探测包,或探测包没有收到ACK的响应包),select会返回socket可读,并且在recv时返回-1,同时置上errno为ETIMEDOUT。
(责任编辑:A6)
本站文章仅代表作者观点,本站仅传递信息,并不表示赞同或反对.转载本站点内容时请注明来自www.linuxeden.com-Linux伊甸园
顶一下
Linux操作系统下TCP keepalive属性查看
不容错过的IBM集群技术资源汇总
Tcp是面向连接的,在实际应用中通常都需要检测连接是否还可用.如果不可用,可分为:
a. 连接的对端正常关闭.
b. 连接的对端非正常关闭,这包括对端设备掉电,程序崩溃,网络被中断等.这种情况是不能也无法通知对端的,所以连接会一直存在,浪费国家的资源.
tcp协议栈有个keepalive的属性,可以主动探测socket是否可用,不过这个属性的默认值很大.
全局设置可更改/etc/sysctl.conf,加上:
net.ipv4.tcp_keepalive_intvl = 20 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_time = 60 |
#include #include #include #include #include int keepAlive = 1; // 开启keepalive属性 int keepIdle = 60; // 如该连接在60秒内没有任何数据往来,则进行探测 int keepInterval = 5; // 探测时发包的时间间隔为5 秒 int keepCount = 3; // 探测尝试的次数.如果第1次探测包就收到响应了,则后2次的不再发. setsockopt(rs, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepAlive, sizeof(keepAlive)); setsockopt(rs, SOL_TCP, TCP_KEEPIDLE, (void*)&keepIdle, sizeof(keepIdle)); setsockopt(rs, SOL_TCP, TCP_KEEPINTVL, (void *)&keepInterval, sizeof(keepInterval)); setsockopt(rs, SOL_TCP, TCP_KEEPCNT, (void *)&keepCount, sizeof(keepCount)); |
(责任编辑:A6)
本站文章仅代表作者观点,本站仅传递信息,并不表示赞同或反对.转载本站点内容时请注明来自www.linuxeden.com-Linux伊甸园
相关文章推荐
- linux下TCP keepalive 属性设置
- linux下TCP keepalive 属性设置
- Linux操作系统下TCP keepalive属性查看
- Linux下TCP keepalive属性的表现
- Linux下TCP keepalive属性的表现
- Linux下TCP keepalive属性的表现
- Linux操作系统下TCP keepalive属性查看
- Linux网络编程之TCP编程,select多路复用和超时检测,网络属性设置setsockopt之快速重启(非常经典)
- Linux多线程锁属性设置
- Linux文件属性、权限设置
- linux设置PS1属性
- tcp_keepalive的设置
- Linux文件属性、权限设置
- Linux系统停的设置TCP心跳机制Keepalive为什么总是无效果
- linux学习(8)文件的隐藏属性,隐藏属性设置,特殊权限,特殊权限设置,观察文件类型
- TCP协议属性设置之SO_LINGER属性
- Linux文件属性设置 -- fcntl函数
- linux 设置文件的隐藏属性 chattr
- Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用
- linux系统下TCP参数查看和设置