关于recv的返回值

通常recv有几种返回值

1.==0

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

2.>0 

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

3.<0

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

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

 

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

posted @ 2016-04-22 14:50  JinleiZhang  阅读(5001)  评论(0编辑  收藏  举报