我在运行一段代码时,发现只打印aaa,没有打印bbb,通过调试,发现在while一次过后,下次while时,while的那行停止了,啥反应都没有ByteArrayOutputStream bos = new ByteArrayOutputStream();
int ch;
while((ch=inputStream.read()) != -1){
System.out.println("aaa");
bos.write(ch);
}
System.out.println("bbb");
int ch;
while((ch=inputStream.read()) != -1){
System.out.println("aaa");
bos.write(ch);
}
System.out.println("bbb");
InputStream.read()方法是阻塞式的,详情查API
try{
while((ch=inputStream.read()) != -1){
System.out.println("aaa");
bos.write(ch);
}
}catch(Exception e){
... ...
}
你说“下一次while”,是重新进入到这段程序吗?
如果是的话,就表示read()在等待输入流的数据。
阻塞是机制,并不是错误,要解决什么?。
你检查下输入流吧,数据是否发送。
乱猜的
我建议在报文中设置规则:
比如按报文长度读取,
或者是在报文末添加结束符。