通常recv有几种返回值

1.==0

表示收到FIN包, 因为FIN包,是状态为标记为FIN的空包,没有携带数据,所以recv的长度为0

2.>0 

表示收到了数据, 但是有没有收完,是不知道的

3.<0

1) == EAGAIN  表示接收缓冲区中已经没数据了,需要暂停下,业务程序需要检查下包的完整性,才知道有没有收完,如果没收完,就继续recv

2) != EAGAIN  表示接收出错了,如果是服务端, 就可以直接关闭连接了.

 

切记收到FIN包后,准备关闭连接前,一定要处理完接收缓冲区中的数据。

相关文章:

  • 2022-02-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-12
  • 2021-05-28
  • 2022-12-23
猜你喜欢
  • 2021-11-21
  • 2022-03-08
  • 2022-12-23
  • 2021-09-30
  • 2022-03-08
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案