2

こんにちは、私は自分のゲームでマルチプレイヤーを作成し、それが機能することをお伝えしたかったのですが、ヨーロッパの片側から反対側まで 8 秒かかりました。送信するものは多くありません。float x、float y、および String ユーザー名を持つオブジェクトのみを送信します。

サーバーには、Accept、Send、Receive の 3 つのスレッドがあります。そして、クライアントには送受信があります。

サーバーの送信の一部:

oos = new ObjectOutputStream(new BufferedOutputStream(list_sockets.get(i).getOutputStream()));
int client_state = list_client_states.get(i);
oos.writeObject(client_state);
oos.flush();

oos = new ObjectOutputStream(new BufferedOutputStream(list_sockets.get(i).getOutputStream()));
oos.writeObject(list_data);
oos.flush();

クライアントの場合も同様で、サーバーの受信は次のとおりです (プレーヤーの場合も同様です)。

ois = new ObjectInputStream(list_sockets.get(i).getInputStream());
int receive_state = (Integer)ois.readObject();

ois = new ObjectInputStream(list_sockets.get(i).getInputStream());
DataPackage dp = (DataPackage) ois.readObject();

list_data.set(i,dp);
4

2 に答える 2

0

2つの浮動小数点数と文字列だけで構成されるオブジェクトを送信する場合、シリアライゼーション/デシリアライゼーションの方法に大きな違いはありません。確かに、8 秒の遅延が直接発生することはありません。(シリアライゼーション形式の影響は、非常に低いビット レートのネットワーク リンクを使用していない限り、数ミリ秒以下になる可能性があります。)

本当の問題は、ネットワークの問題か、(おそらく) 表示されていないコードの同期バグのいずれかであると思われます。

于 2012-04-11T11:17:11.080 に答える