在java中,InputStream 的 read() ,read(byte [] bs), read(byte [] bs, offset, length)方法在读到流结尾的时候,会返回-1
我们在读取数据的时候,会这么干:
byte [] bs = new byte[1024];
int i=0;
while((i=ins.read(bs))!=-1)
Log.debug("Client Read: " + i+" >> " ,bs);
现在从Socket中读取,遇到了一点问题,
服务器的socket数据早就写完了,可客户端上的read(byte [] b)就是不返回 -1,一直塞着
目前是用超时来解决了
可是老用超时会影响性能呀,为什么不会返回-1呢?API文档中可明明是写着的
难道服务器端发送的数据有问题?
服务器发送代码:
byte [] bs= "0123456789abcde".getBytes();
Log.debug("Server Writer: ",bs);
ous.write(bs);
ous.flush();
这段代码应该不会有问题吧
输出流的结束标记是什么?难道还要手动发一个结束标记?才能让SocketInputStream返回-1
伙计们,不用提它建议,比如服务器发送的时候,加上数据长度...
我现在只是想知道为什么不能返回 -1,我的做法错在哪?
钻个牛角尖