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 を含めるようにすると、3 番目のクライアントでサーバーに接続したときに、パケット データが乱れていました。また、これを入力しても、戻ってもう一度テストすることにしましたが、エラーは発生しなくなりました。何とかこれを理解できる人に +100 インターネット ポイントを付与します。これが私のプロジェクト全体です(私の厄介なコードを許してください) http://www.mediafire.com/?9w6god1cjsnwbnf

4

1 に答える 1

0

あなたの問題が何であるかはわかりませんが、私が抱えていた問題はほとんど同じことをしています:

ObjectOutput/ObjectInput を使用する場合は、reset書き込みのたびに必ずメソッドを呼び出してください。オブジェクト出力は、リセットの間に単一のオブジェクトのみを書き込むため、送信して値を変更し、再度送信すると、反対側は古い値のみを受け取ります。これは、オブジェクト グラフ全体を送信するための独創的な方法ですが、実行しようとしていることが台無しになります。

複数の複数のスレッドで書いている場合、それらが思った順序で実行されていない可能性が高くなります。

于 2013-07-09T15:35:26.323 に答える