Java游戏网络不稳定的错误

时间:2013-07-09 13:03:00

标签: java networking udp

我在这里完全失败了。我昨天整晚和昨晚整晚都在努力弄清楚我的代码究竟出了什么问题,但现在我觉得我的计算机里有一点点贪婪地占用了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

1 个答案:

答案 0 :(得分:0)

我不知道你的问题可能是什么,但问题我做了同样的事情:

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

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