私はマルチプレイヤーゲームをプログラミングしていますが、私はudpパケットのサイズに苦労しています。私はudpパケットを介して複数の敵の統計情報(hp、位置、id)を送信したい。ここで重要なコード部分です:あなたが見ることができるように、私はそれを送信する前に、[]のバイトに、それを変換した後の文字列にすべてのデータをマージしていますUDPパケット:1つのパケットに異なるデータ型を送信するには?
Byte[] datagramPacketData = ("11" + String.valueOf(entityAmount) + "," + gamename + "," + username + entitiesToBeSent).getBytes();
。しかし、charは、小さなint(idとposition)とlongs(hp)よりも多くのバイトを消費します。 例:1匹の暴徒は2.000.000馬力です。その数は7文字(= 7バイト)を消費しますが、長い間は4バイトしか必要としません。オブジェクトストリームを使用せずに、より少ないバイト数でこのデータをすべて送信するにはどうすればよいですか?
私はいくつかの提案について非常に満足しています! ありがとうございます。
個々のチャンクを文字列に変換するのではなく、バイトに変換してから、すべてを一度にバイトに変換しますか? – Natecat
受信側でどのように解析するのですか?つまり、どのバイトの塊が何であるかをどのように知ることができるのでしょうか。私は1バイトの[]メッシュだけを受け取るので、 – Madness
あなたができるいくつかのことがあります。標準的な長さのパケットを作成して、バイト配列内の位置の範囲が一貫して特定の変数に対応するようにするか、各変数の開始位置を示すバイトを配列に追加することができます。 – Natecat