linux下TCP keepalive 属性设置
来源:互联网 发布:淮南安广网络资费 编辑:程序博客网 时间:2024/05/16 23:40
0
顶一下
Linux操作系统下TCP keepalive属性查看
不容错过的IBM集群技术资源汇总
不容错过的IBM集群技术资源汇总
<script type="text/javascript"><!--google_ad_client = "pub-8876982994034985";/* 336x280, 文章内页 */google_ad_slot = "1326844186";google_ad_width = 336;google_ad_height = 280;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><iframe name="google_ads_frame" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-8876982994034985&dt=1220497349834&lmt=1210517873&output=html&slotname=1326844186&correlator=1220497349830&url=http%3A%2F%2Fwww.linuxeden.com%2Fhtml%2Fsysadmin%2F20080321%2F51920.html&frm=0&cc=100&ga_vid=1597463643487295200.1220497350&ga_sid=1220497350&ga_hid=1719255691&flash=0&u_h=768&u_w=1024&u_ah=717&u_aw=1024&u_cd=24&u_tz=480&u_his=10&u_java=true&u_nplug=5&u_nmime=28" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" frameborder="0" height="280" scrolling="no" width="336"></iframe>
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));
在程序中表现为,当tcp检测到对端socket不再可用时(不能发出探测包,或探测包没有收到ACK的响应包),select会返回socket可读,并且在recv时返回-1,同时置上errno为ETIMEDOUT。
(责任编辑: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 keepalive属性的表现
- Linux下TCP keepalive心跳设置
- linux下使用TCP存活(keepalive)定时器
- linux下使用TCP存活(keepalive)定时器
- linux下使用TCP存活(keepalive)定时器
- linux下使用TCP存活(keepalive)定时器
- linux下使用TCP存活(keepalive)定时器
- linux下使用TCP存活(keepalive)定时器
- linux下使用TCP存活(keepalive)定时器
- 在Linux环境下使用TCP的keepalive机制
- linux下nginx+keepalive
- Hibernate的检索策略
- 线程池回调
- C# 中的委托和事件
- 第一个perl程序
- 破解Word “取消文档保护”密码
- linux下TCP keepalive 属性设置
- js 读写cookie
- csdn竟然有空间了?
- 手机号码查询移动案例教学 for PocketPC
- 《博客园精华集》Silverlight筛选结果
- css hack, 浏览器 选择
- 幂等性-Idempotency
- CGI IIS
- 使用AjaxPro调用Session、Cookie