Socket fromSt = new Socket(8989);
fromDis = new DataInputStream(new BufferedInputStream(fromSt.getInputStream())); 
byte[] buf = new byte[2048];
int read = 0;
while((read=fromDis.read(buf)) != -1) {...}
fromDis是一个DataInputStream对象就是在循环读取fromDis时出现了java.net.SocketException: Connection reset异常。
循环前几次正常 然后莫名的就抛出这个异常了。
请高手指教

解决方案 »

  1.   

    一般出现java.net.SocketException: Connection reset这个异常好像都是其中有一个关闭了sockect连接吧。
      

  2.   

    还有在用socket的时候注意关掉防火墙,很多问题就是防火墙引起的吧。
      

  3.   

    我把socket的isClosed()方法打印出来了 为false  说明都没有关闭。 防火墙也是关着的。
      

  4.   

    java.net.SocketException: (Connection reset或者 Connect reset by peer:Socket write error)。该异常在客户端和服务器端均有可能发生,引起该异常的原因有两个,第一个就是如果一端的Socket被关闭(或主动关闭或者因为异常退出而引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常 (Connect reset by peer)。另一个是一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的。
      

  5.   

    看这个帖子http://topic.csdn.net/t/20060904/13/4996814.html是不是也是在客户端程序里处问题,他这个是在客户端线程里run方法运行完了后,socket自动关掉了。你会不会也是这个情况?
      

  6.   

    这个也是老问题了啊
    呵呵
    isclosed()这个不好用的
    在读写数据流的时候一方断开就会有这种异常
    记得见过一个判断断开的
    我要找找
      

  7.   

    Connection reset表示reset而不是close,所以isClosed()方法是false。
    close为正常关闭,对方调用了close()方法;而reset为非正常关闭,包括对方调用close()之前设置了socket为no waiting状态,或直接结束了通讯进程,或网络故障等,都会导致reset。