91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言判斷socket是否關閉的方法

發布時間:2020-05-22 17:23:08 來源:億速云 閱讀:1267 作者:鴿子 欄目:編程語言

套接字(socket)是一個抽象層,應用程序可以通過它發送或接收數據,可對其進行像對文件一樣的打開、讀寫和關閉等操作。

方法一:

當recv()返回值小于等于0時,socket連接斷開。但是還需要判斷 errno是否等于 EINTR,如果errno == EINTR 則說明recv函數是由于程序接收到信號后返回的,socket連接還是正常的,不應close掉socket連接。

方法二:

  struct tcp_info info; 
  int len=sizeof(info); 
  getsockopt(sock, IPPROTO_TCP, TCP_INFO, &info, (socklen_t *)&len);
  if((info.tcpi_state==TCP_ESTABLISHED))  則說明未斷開  else 斷開

方法三:

若使用了select等系統函數,若遠端斷開,則select返回1,recv返回0則斷開。其他注意事項同法一。

法四:

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));

設置后,若斷開,則在使用該socket讀寫時立即失敗,并返回ETIMEDOUT錯誤

以上就是golang怎么判斷套接字是否關閉的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新平| 江安县| 张家界市| 应城市| 赞皇县| 扎兰屯市| 温州市| 额敏县| 崇左市| 济源市| 辉南县| 瓦房店市| 桐梓县| 芜湖县| 湖州市| 新源县| 安达市| 信阳市| 宜兰市| 绥中县| 寻乌县| 水城县| 阳江市| 页游| 普兰店市| 长乐市| 鄢陵县| 炎陵县| 宁武县| 襄垣县| 唐山市| 大关县| 南部县| 上林县| 湖州市| 玉田县| 云浮市| 辽阳县| 玉门市| 大安市| 大同县|