java.net.SocketException: Socket closed
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1838)
at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1747)
at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1249)
at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1203)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1387)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1538)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:329)
at com.softfz.client.thread.ClientReaderThread.sendToServer(ClientReaderThread.java:272)
at com.softfz.client.view.ClientTalkFrame.sendAction(ClientTalkFrame.java:216)
at com.softfz.client.view.ClientTalkFrame.actionPerformed(ClientTalkFrame.java:194)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6134)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

解决方案 »

  1.   

    这种错误,是服务器关闭Socket可能性大,还是客户端出现的可能性大呢?
      

  2.   

    at com.softfz.client.thread.ClientReaderThread.sendToServer(ClientReaderThread.java:272)
    at com.softfz.client.view.ClientTalkFrame.sendAction(ClientTalkFrame.java:216)
    at com.softfz.client.view.ClientTalkFrame.actionPerformed(ClientTalkFrame.java:194)应该是客户端的Socket已经关闭了。这种错误,是服务器关闭Socket可能性大,还是客户端出现的可能性大呢? 
    这个具体看情况。如果非要说可能性,一般客户端Socket出问题大点,因为如果服务端的ServerSocket关闭了,所有客户端都连不上了,这个问题比较严重。
      

  3.   

    你这个错误说明你最基本的catch都没有做吗?SOCKET关闭要加处理的。
      

  4.   

    at com.softfz.client.thread.ClientReaderThread.sendToServer(ClientReaderThread.java:272)
    at com.softfz.client.view.ClientTalkFrame.sendAction(ClientTalkFrame.java:216)
    at com.softfz.client.view.ClientTalkFrame.actionPerformed(ClientTalkFrame.java:194)
    错误日志不是很明显么,说是客户端发送数据时,发现socket连接关了。 程序在那些地方会close socket呢?你写的聊天室? 那就应当只有关闭客户端frame的时候才需要close吧。