网络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 状态:表明正在通信。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)