通常recv有幾種返回值
1.==0
表示收到FIN包, 因為FIN包,是狀態為標記為FIN的空包,沒有攜帶數據,所以recv的長度為0
2.>0
表示收到了數據, 但是有沒有收完,是不知道的
3.<0
1) == EAGAIN 表示接收緩沖區中已經沒數據了,需要暫停下,業務程序需要檢查下包的完整性,才知道有沒有收完,如果沒收完,就繼續recv
2) != EAGAIN 表示接收出錯了,如果是服務端, 就可以直接關閉連接了.
切記收到FIN包后,准備關閉連接前,一定要處理完接收緩沖區中的數據。