Tcp是面向连接的,在实际应用中通常都需要检测连接是否还可用.如果不可用,可分为:
a. 连接的对端正常关闭.
b. 连接的对端非正常关闭,这包括对端设备掉电,程序崩溃,网络被中断等.这种情况是不能也无法通知对端的,所以连接会一直存在,浪费国家的资源.
tcp协议栈有个keepalive的属性,可以主动探测socket是否可用,不过这个属性的默认值很大.
全局设置可更改/etc/sysctl.conf,加上:
|
在程序中设置如下:
|
在程序中表现为,当tcp检测到对端socket不再可用时(不能发出探测包,或探测包没有收到ACK的响应包),select会返回socket可读,并且在recv时返回-1,同时置上errno为ETIMEDOUT。
转 载:http://www.qqread.com/linux/2008/03/y402584.html相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Windows操作系统安装 (15795篇文章)
- 系统优化大全 (18311篇文章)
- 系统安全设置 (23826篇文章)
- 操作系统常见故障解析 (4452篇文章)
- 配置安全的操作系统 (9973篇文章)
- 系统安装手册 (21063篇文章)
- 系统备份专题 (17734篇文章)
- Linux集群技术 (8557篇文章)
- 体验Linux的音影世界 (8229篇文章)
- Linux驱动大全 (9037篇文章)
- 最具影响力的七大GNU/Linux发行版 (70次浏览)
- Linux“装机”一条龙 (46次浏览)
- 安装qmail全套功略 (37次浏览)
- TurboLinux 入门教程:第七课 TurboLinux简介 (33次浏览)
- Linux系统管理员秘技:用快捷命令一招制胜 (32次浏览)
- Linux系统命令分类详解 (1) (32次浏览)
- 桌面Linux:微软无需畏惧 (28次浏览)
- 高级Linux安全管理技巧(上) (28次浏览)
- Linux上的偷窺裝置 (1394的使用) (27次浏览)
- Linux更值得一试 细数GNOME的8个新特性 (26次浏览)



