| 導購 | 订阅 | 在线投稿
分享
 
 
 

Linux操作系統下TCP keepalive屬性查看

來源:互聯網  2008-06-01 02:22:28  評論

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。

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。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有