在TCP文件传输中如何判断java流的末尾

感谢前辈们的解答:https://bbs.csdn.net/topics/280085530

问题描述:

服务端向客户端发送数据流,服务端发完了数据不关闭流。 我在客户端读流,我无法读到-1,所以无法判断流的末尾。
有没有人指点我下,如何才能判断出流的末尾?(服务端我无法控制,我只能控制客户端)

网络流中判断末尾的解决办法:

1、先发送一个指定长度的头,头中指明正文长度,然后以该长度读取正文
2、以规定的字符或格式结束
3、关闭流或者关闭连接(如Java中关闭流后read不到后会返回-1或者null等),注意:不关流会一直read的(在timeout时间规定内)

补充:
Java中设置无限制超时方法socket.setSoTimeout(0);,0即代表了无限制;
另外,在设置无限制超时后,连接的时候可以用socket.connect(SocketAddress address,int timeout)来检测限制连接超时。注意亲自动手体会妙用。

posted @ 2019-11-29 16:49  超级小白龙  阅读(555)  评论(0编辑  收藏  举报