0

D で記述されたサーバー側アプリがあり、クライアント アプリは C# で記述されています。それらの間の通信に BinaryWriter を使用していますが、バイトオーダーに問題があります。

実際には、バイトの順序は同じではありません。例:

C# クライアント:

MemoryStream ms = new MemoryStream();
BinaryWriter writer = new BinaryWriter(ms);
writer.Write((ushort)0x01);
writer.Write("test");

クライアント出力:

[1, 0, 4, 116, 101, 115, 116]

サーバー出力:

[0, 1, 0, 4, 116, 101, 115, 116]

クライアントの場合、最初の 2 バイトが反転され、サーバー アプリの文字列ushortの長さがエンコードされます。BinaryWriter の動作を「変更」することは可能ですか、それとも独自の実装を作成する必要がありますか?

編集: サーバー側のパケットシリアライザー: https://github.com/Adwelean/EmperadorServer/blob/master/source/vendor/cerealed/cerealiser.d

4

1 に答える 1