Socket类型文件,在Java里,会在文件读完的时候返回 -1, 而一般 TCP Socket就需要会通过上层协议来保证,TCP Socket一般会有复用,所以基本上没有发完这一说,当然你可以选择在发送端发送完文件内容以后主动关闭Socket来表示数据传输完毕,但是这种情况你就没有办法区分出是网络抖动还是发送端真的发完了。
你也可以自己弄一个最简单的协议,在发送真正的文件之前先发送一些别的信息,比如文件长度,文件MD5之类的,当你读到头里指定的字节数之后就可以直接认为已经读完了,比如文件长度 文件MD5 真实的文件内容4字节(4GB,根据你最大的文件大小定,保险可以8字节) 16字节不固定字节数。

如果觉得《tcp客户端如何确定接收全部数据 – java – 前端》对你有帮助,请点赞、收藏,并留下你的观点哦!