首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(recv() == 0)表示断开连接还是超时?(套接字、Linux和Windows)

recv() 函数用于从套接字接收数据

  1. recv() 返回 0:这通常表示连接已经正常关闭。对方已经发送了 FIN 包,请求关闭连接。这是一个正常的退出情况,通常意味着在一次正常的通信会话结束。
  2. recv() 返回 -1:这表示在接收数据时发生了错误。当 errno(在 Linux 中)或 WSAGetLastError()(在 Windows 中)设置为 EAGAINEWOULDBLOCK 时,表示没有数据可用且套接字处于非阻塞模式。当 errnoWSAGetLastError() 设置为 ETIMEDOUT 时,表示在指定的超时时间内没有收到数据,发生了超时。

因此,当 (recv() == 0) 时,表示连接已经正常关闭,而不是超时。要检查超时,请检查 errnoWSAGetLastError() 是否设置为 ETIMEDOUT

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券