io流的问题

依然一叶 2014-06-05 05:27:18

StringBuffer request = new StringBuffer();
int len = 0;
byte[] inByte = new byte[1024];
while((len = in.read(inByte)) != -1){
request.append(new String(inByte,0,len));
System.out.println(new String(inByte,0,len));
}
System.out.println(request);


新手求助,socket 接收到流 执行完while循环就不往下走了
...全文
182 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
依然一叶 2014-06-09
  • 打赏
  • 举报
回复
引用 5 楼 benben94562581 的回复:
while(len = in.read(inByte)) != -1){ } 应该是in没有close,len一直不等于-1,所以在等待in这里获取下一个字符 理论上来说,一般接受的socket请求都是 长度+报文,根据长度来截取位数 或者约定当遇到什么样的字符串作为结束的标准。 以len = in.read(inByte)) != -1z这种方式来做的话,除非输入端有close,否则就是长时间的等待,一直到timeout抛错位置。
非常感谢,就是因为我的client端没关数据流!~ 谢谢大神指导,我又学到东西。。。
S117 2014-06-06
  • 打赏
  • 举报
回复
你是说System.out.println(request);这句没执行吗? 如果是这样的话,估计是while死循环啦?
依然一叶 2014-06-06
  • 打赏
  • 举报
回复
自己顶一下,要么都沉底了。。。
jing930807 2014-06-06
  • 打赏
  • 举报
回复
你的数据流关了吗 没关怎么走下面 request.close() 试试看
benben94562581 2014-06-06
  • 打赏
  • 举报
回复
while(len = in.read(inByte)) != -1){ } 应该是in没有close,len一直不等于-1,所以在等待in这里获取下一个字符 理论上来说,一般接受的socket请求都是 长度+报文,根据长度来截取位数 或者约定当遇到什么样的字符串作为结束的标准。 以len = in.read(inByte)) != -1z这种方式来做的话,除非输入端有close,否则就是长时间的等待,一直到timeout抛错位置。
依然一叶 2014-06-05
  • 打赏
  • 举报
回复
引用 1 楼 zhaihonghonghzh 的回复:
System.out.println(new String(inByte,0,len)); 这句话执行了吗
执行了 。
zhaihonghonghzh 2014-06-05
  • 打赏
  • 举报
回复
System.out.println(new String(inByte,0,len)); 这句话执行了吗

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧