国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

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

2024-07-26 00:37:43
字體:
來源:轉載
供稿:網友
 

Tcp是面向連接的,在實際應用中通常都需要檢測連接是否還可用.如果不可用,可分為:

a. 連接的對端正常關閉.

b. 連接的對端非正常關閉,這包括對端設備掉電,程序崩潰,網絡被中斷等.這種情況是不能也無法通知對端的,所以連接會一直存在,浪費國家的資源.

tcp協議棧有個keepalive的屬性,可以主動探測socket是否可用,不過這個屬性的默認值很大.

全局設置可更改/etc/sysctl.conf,加上:

net.ipv4.tcp_keepalive_intvl = 20net.ipv4.tcp_keepalive_PRobes = 3net.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。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白河县| 沧州市| 资阳市| 丰城市| 合肥市| 靖远县| 云阳县| 龙游县| 紫阳县| 攀枝花市| 加查县| 伊春市| 五原县| 红安县| 集安市| 花垣县| 盐边县| 珲春市| 泗阳县| 万荣县| 伊宁县| 峨眉山市| 年辖:市辖区| 南宁市| 景宁| 临邑县| 合肥市| 秦皇岛市| 台山市| 兴隆县| 永春县| 青铜峡市| 南木林县| 社会| 永靖县| 金沙县| 龙州县| 错那县| 新龙县| 丽水市| 吴忠市|