我尝试过使用read() = -1这种方法来判断是否读完字节流
- DataInputStream in = new DataInputStream(socket.getInputStream());
- ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
- int read = 0;
- while ( (read = in.read()) != -1 ) {
- swapStream.write(read);
- }
结果还是不行,如果socket没有接收到数据,它不会返回-1,所以这个循环就一直在等着。。直到把socket关闭才会退出循环。。
1.报文需要特定格式,报文头显示整个报文字节长度.
读取流时new String(char[], 0, br.read(char[])) .getBytes[]的长度累加,
累加到报文字节长度则退出循环.
与文件流区别是,文件流有结尾标志.也是约定好的
流是什么?就是一堆不知道是啥的连续数据。那么如何界定边界呢?
1 提前定义,告诉对方,我给你1000个字节
2 约定结束标志,比如大家约定ASCII的0就是结束,但要求你的数据内部可不能有0出现哦
3 你关闭连接好了,对方就认为结束了,
http1.1是第一种,有个ContentLength, http1.0是第三种,直接关闭连接。