网络socket通信中如何判断对方是否断开

  • 写网络socket通信的时候我们有时候需要判断对方是否断开

 除了select函数,io操作,还可以通过tcp_info结构体实现:

  //(需要头文件:#include <netinet/tcp.h>)

  struct tcp_info tcp_info;

       int tcp_len = sizeof(tcp_info);

  函数:  getsockopt(fd,IPPROTO_TCP,TCP_INFO,&tcp_info,(socklen_t*)&tcp_len);

  fd参数为正在通信的文件描述符

  如果对方主动关闭连接,或者网络异常导致连接中断,我方的状态就会变成CLOSE_WAIL

  因此可以通过这个判断

  if (tcpinfo.tcpi_state  == TCP_CLOSE_WAIT)

  {

              /*codes*/

  }

  ///////////////////////////////////////////////////////////////////////////

  tcpinfo.tcpi_state  == TCP_CLOSE_WAIT  //说明对方已经断开连接。

 

  如果是ESTABLISHED  状态:表明正在通信。

 

  

  

posted @   面筋玄师  阅读(1123)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示