Python Twisted frameowrk transport.write to aC# socket BeginReceive значение чтения сообщения на основе длины чтения

Я использую кадрирование сообщений на основе длины с помощью витой среды Python с клиентом C#, на котором выполняется асинхронное чтение BeginRecieve, и у меня возникают проблемы с получением значения длины сообщения.

Это искаженный код Python

self.transport.write (pack (self.structFormat, len(string)) + string)

И это код C#:

int bytesRead = client.EndReceive (ar);

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

Проблема в том, что значение len (string) не корректно, когда я беру его через Bitconverter на стороне C#. Значение должно быть 15, но оно выглядит как 251658240.

Любое понимание будет высоко ценится.

1 ответ

Извините, вопрос был плохо задан. Я нашел решение, хотя.

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

int msg_size = IPAddress.NetworkToHostOrder (netmsg_size);

Это преобразует сетевое целое число обратно в обычное целое число.

Другие вопросы по тегам