私はC#でクライアントを作成しましたが、LinuxでCでサーバーを構築したいと思います。
すべての「メッセージ」に「メッセージ」の長さのプレフィックスを使用します。(4バイト配列)byte[]
を使用して配列にエンコードします。BitConverter.GetBytes()
その後、私はそれを送信します
socket.Send(prefix, prefix.Length, 0);
Linux上のCサーバーは番号を読み取ることができません。4バイトを読み取ったにもかかわらず、奇妙な文字が表示されます。
Linux側は次のようになります
char prefix[4];
int bytes = 0;
bytes = recv(s, prefix, 4, 0);
printf("%s", prefix);
を使用して数値をエンコードするとEncoding.UTF8.GetBytes()
、Linuxはそれを正しく理解します。
私はそれをテストしました、そして問題はプログラムがこれらの2つの異なる言語でコード化されているときだけであるように見えます。
どうしたの?