0

我在这里几乎完全不知所措。我昨天和昨晚一整天都在尝试找出我的代码到底出了什么问题,但现在我想我的电脑里实际上有一个小鬼在蚕食 CPU。我正在关注本教程系列:

http://www.youtube.com/watch?v=l1p21JWa_8s&list=ELp5mgUw5g9EY

直到我决定暂停它并制作我自己的自定义 Packet 类。它工作了一段时间,但随后一些非常奇怪的事情开始发生。基本上发生的事情是客户端和服务器之间发送的数据在收到时以某种方式变得混乱(我确认数据在发送之前是正确的)。这发生在看似随机的点上,现在我很困惑

例如我有这行:

System.out.println( m_Game.m_aConnectedPlayers[ intPlayerID ].GetUserName( ) + " has joined." );

并将其更改为

System.out.println( m_Game.m_aConnectedPlayers[ intPlayerID ].GetUserName( ) + "(" + intPlayerID + ") has joined." );

包括玩家 ID,然后当我使用第三个客户端连接到服务器时,数据包数据被打乱了。即使我输入了这个,我还是决定回去再次测试它,错误停止发生。我将向任何能够以某种方式解决这个问题的人授予 +100 互联网积分。这是我的整个项目(请原谅我的代码混乱) http://www.mediafire.com/?9w6god1cjsnwbnf

4

1 回答 1

0

我不知道您的问题可能是什么,但是我遇到的问题大致相同:

如果您使用 ObjectOutput/ObjectInput,请确保reset在每次写入后调用该方法。对象输出仅在重置之间写入单个对象,因此如果您发送它,更改值,然后再次发送,另一端将只接收旧值。这是发送整个对象图的一种巧妙方法,但它会使您尝试做的事情变得一团糟。

如果您使用多个多线程编写,那么它们很有可能没有按照您认为的顺序运行。

于 2013-07-09T15:35:26.323 回答