流长连接不关闭,如果读取长度。

我尝试过使用read() = -1这种方法来判断是否读完字节流

  1. DataInputStream in = new DataInputStream(socket.getInputStream());   
  2. ByteArrayOutputStream swapStream = new ByteArrayOutputStream();   
  3. int read = 0;   
  4. while ( (read = in.read()) != -1 ) {   
  5.     swapStream.write(read);   
  6. }  

 

结果还是不行,如果socket没有接收到数据,它不会返回-1,所以这个循环就一直在等着。。直到把socket关闭才会退出循环。。

 




1.报文需要特定格式,报文头显示整个报文字节长度.

 

读取流时new String(char[], 0, br.read(char[])) .getBytes[]的长度累加,

累加到报文字节长度则退出循环.

 

与文件流区别是,文件流有结尾标志.也是约定好的



流是什么?就是一堆不知道是啥的连续数据。那么如何界定边界呢?
1 提前定义,告诉对方,我给你1000个字节
2 约定结束标志,比如大家约定ASCII的0就是结束,但要求你的数据内部可不能有0出现哦
3 你关闭连接好了,对方就认为结束了,

http1.1是第一种,有个ContentLength, http1.0是第三种,直接关闭连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值