问题描述:
服务端向客户端发送数据流,服务端发完了数据不关闭流。 我在客户端读流,我无法读到-1,所以无法判断流的末尾。
有没有人指点我下,如何才能判断出流的末尾?(服务端我无法控制,我只能控制客户端)
网络流中判断末尾的解决办法:
1、先发送一个指定长度的头,头中指明正文长度,然后以该长度读取正文
2、以规定的字符或格式结束
3、关闭流或者关闭连接(如Java中关闭流后read不到后会返回-1或者null等),注意:不关流会一直read的(在timeout时间规定内)
补充:
Java中设置无限制超时方法socket.setSoTimeout(0);
,0即代表了无限制;
另外,在设置无限制超时后,连接的时候可以用socket.connect(SocketAddress address,int timeout)
来检测限制连接超时。注意亲自动手体会妙用。