我正在设计一款网络游戏,因此我有一个客户端,其中一个监听线程来自服务器,而服务器也有一个监听线程正在监听来自客户端的消息。有关多线程编程的赛车场景
在客户端面板我下面的一个:发送一些信息给服务器
后来自同一个地方的两行代码与其他功能再次这样做。
结果是有时运行良好并且有时会抛出异常的代码运行。 在客户端面板上的某个发送函数的行处抛出异常。
注:如果我把Thread.sleep(1000);
两者之间发送比不会抛出异常,但你知道这是一个坏的解决方案..
*发送信息,以独一无二的服务器线程的两个功能是:
ClientCommunicationThread.UpdateServerOfTimeEnded
ClientCommunicationThread.SendRequestToClosePlayerThreadAndRemoveItFromPlayersOnServer
我怎样才能解决这个问题
感谢。
这是堆栈跟踪:
java.net.SocketException: Software caused connection abort: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:115) at java.io.DataOutputStream.writeInt(DataOutputStream.java:181) at GUI.ClientCommunicationThread.UpdateServerOfTimeEnded(ClientCommunicationThread.java:850) at GUI.JPanelMainGame$2.actionPerformed(JPanelMainGame.java:312) at javax.swing.Timer.fireActionPerformed(Timer.java:271) at javax.swing.Timer$DoPostEvent.run(Timer.java:201) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 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) java.net.SocketException: Software caused connection abort: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:115) at java.io.DataOutputStream.writeInt(DataOutputStream.java:180) at GUI.ClientCommunicationThread.SendRequestToClosePlayerThreadAndRemoveItFromPlayersOnServer(ClientCommunicationThread.java:824) at GUI.JPanelMainGame$2.actionPerformed(JPanelMainGame.java:325) at javax.swing.Timer.fireActionPerformed(Timer.java:271) at javax.swing.Timer$DoPostEvent.run(Timer.java:201) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 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,用于堆栈跟踪 – doNotCheckMyBlog