try{
output.writeObject("用户下线");
output.flush();
if(output!=null){
output.close();
}
.....
}为什么运行到这里的时候会有异常
异常为
java.net.SocketException: socket closed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2196)
at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2486)
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2496)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1273)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
at com.hyh.QQ.chat_client.ClientReceive.run(ClientReceive.java:29)

解决方案 »

  1.   

    这个异常会有的,当Socket连接结束时发生,但是没有影响到正常的应用,可以捕捉该异常,并输出"Socket 结束!"之类,保证之前资源关闭就行了
      

  2.   

    try{
    output.writeObject("用户下线");
    output.flush();
     
    if(!socket.isClosed()){
    socket.close();
    }output.close();
    input.close();
    messageShow.append("已经与服务器断开连接...\n");
    type = 0;//标志位设为未连接
    }
    catch (Exception e){
    System.out.println("程序关闭");
    }
    我都写这样了,还是出现那异常我都不知道它怎么打出来的