Java - 从输入流读取时被困住了

时间:2012-02-03 13:27:02

标签: java sockets inputstream

您好我正在使用套接字和输入/输出流。我的循环中有一个奇怪的问题我用来发送字节。出于某种原因,当它试图从输入流中读取它应该停止时它会卡住。有没有人知道什么是错的?

     int bit;
     final byte[] request = new byte[1024];

     if (response instanceof InputStream)
     {   
         while ((bit = response.read(request)) > 0) { // <-- Stuck here
             incoming.getOutputStream().write(request,0,bit);
             incoming.getOutputStream().flush();
         }
     }   
     incoming.close();

2 个答案:

答案 0 :(得分:1)

InputStream.read阻塞,直到输入数据可用,检测到文件结尾或抛出异常。

您没有捕获异常,也没有检查EOF。

答案 1 :(得分:0)

我过去所做的让每一方都打开的是在每封邮件的末尾添加一个终止字符,这些字符在邮件中不会出现。如果您自己构建消息,那么您可以使用;或双管道或||之类的字符。然后在接收端检查该字符。只是一个解决方法。不是解决方案。在我的情况下这是必要的,但可能不适合你。