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);
Это преобразует сетевое целое число обратно в обычное целое число.