tcp客戶端如何確定接收全部數據?
Socket類型文件,在Java里,會在文件讀完的時候返回 -1, 而一般 TCP Socket就需要會通過上層協議來保證,TCP Socket一般會有復用,所以基本上沒有發完這一說,當然你可以選擇在發送端發送完文件內容以后主動關閉Socket來表示數據傳輸完畢,但是這種情況你就沒有辦法區分出是網絡抖動還是發送端真的發完了。你也可以自己弄一個最簡單的協議,在發送真正的文件之前先發送一些別的信息,比如文件長度,文件MD5之類的,當你讀到頭里指定的字節數之后就可以直接認為已經讀完了,比如文件長度 文件MD5 真實的文件內容4字節(4GB,根據你最大的文件大小定,保險可以8字節) 16字節不固定字節數。
?