一个在线运行的系统,主要作为socket服务端提供其他平台访问,平时都很正常,最近出现了一个怪现象,在获取socket请求时建立了连接通道,但是在读取socket的输入流时却读不到任何内容,导致程序一直等待,
比如socket = serverSocket.accept(); 这个获取到socket请求,
但是紧接着
this.in = new PushbackInputStream(new BufferedInputStream(
                                     socket.getInputStream()),32 << 10);
int read = in.read();
这里read就读不到数据,会一直等待知道超时。 
已经排除了网络问题,有经验的朋友帮忙定位下问题所在,我个人感觉不在程序上。

解决方案 »

  1.   

    看看你的流是否有真正从socket中读数据
      

  2.   

    用 PushbackInputStream 这个流的目的是什么?
      

  3.   

    请查看PushbackInputStream
    的Api解释:public class PushbackInputStream
    extends FilterInputStreamPushbackInputStream 为另一个输入流添加性能,即“推回 (push back)”或“取消读取 (unread)”一个字节的能力。在代码片段可以很方便地读取由特定字节值分隔的不定数量的数据字节时,这很有用;在读取终止字节后,代码片段可以“取消读取”该字节,这样,输入流上的下一个读取操作将会重新读取被推回的字节。例如,表示构成标识符字符的字节可能由表示操作符字符的字节终止;用于读取一个标识符的方法可以读取到遇到操作符为止,然后将该操作符推回以进行重读。