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