0

BeginRecieve 非同期読み取りを実行している C# クライアントを使用して、Python ツイスト フレームワークで長さベースのメッセージ フレーミングを使用していますが、メッセージの長さの値を取得するのに問題があります。

これはねじれた python コードです

self.transport.write(pack(self.structFormat, len(文字列)) + 文字列)

これは C# コードです。

int bytesRead = client.EndReceive(ar);

if (bytesRead > 0) { int msg_size = BitConverter.ToInt32(state.buffer, 0);

問題は、C# 側で Bitconverter を介して取得すると、len(string) の値が正しくないことです。値は 15 のはずですが、251658240 になります。

どんな洞察も大歓迎です。

4

1 に答える 1

0

申し訳ありませんが、質問はひどく尋ねられました。私は解決策を見つけました。

int netmsg_size = BitConverter.ToInt32(state.buffer, 0);

int msg_size = IPAddress.NetworkToHostOrder(netmsg_size);

これにより、ネットワーク整数が通常の整数に変換されます。

于 2016-06-09T21:56:42.993 に答える