2016-06-09 5 views
0

Ich verwende längenbasierte Nachricht Framing mit Python verdreht Framework mit einem C# -Client läuft BeginRecieve async liest und ich habe Probleme beim Ergreifen des Wertes von die Länge der NachrichtPython Twisted frameowrk transport.write zu aC# socket BeginReceive lesen Länge basierte Nachricht Framing Wert

Dies ist die verdrehte Python-Code

self.transport.write (Pack (self.structFormat, len (string)) + String)

Und dies ist der C# -Code:

int ByteLesen = client.EndReceive (ar);

if (BytesRead> 0) { int msg_size = BitConverter.ToInt32 (Zustand.Puffer, 0);

Problem ist der Len (String) Wert ist nicht korrekt, wenn ich es über Bitconverter auf der C# Seite ergreife. Der Wert sollte 15 sein, aber es kommt als 251658240.

Jeder Einblick würde sehr geschätzt werden.

+0

gibt es keine Möglichkeit jemand kann diese Frage beantworten. Sie müssen mehr Informationen bereitstellen. Warum erwarten Sie einen Wert von 15? Was ist in dieser Zeichenfolge, die du sendest? Vielleicht können Sie Ihren Code teilen und weitere Details hinzufügen? Im Moment ist Ihre Frage im Wesentlichen wie zu sagen: "Ich habe Zeichenfolge, die ich erwarte, aber es kommt als , warum ist das?". Wie kann jemand diese Frage beantworten? –

Antwort

0

Sorry die Frage wurde schlecht gefragt. Ich habe jedoch die Lösung gefunden.

int netmsg_size = BitConverter.ToInt32 (Zustand.Puffer, 0);

int msg_size = IP-Adresse.NetworkToHostOrder (netmsg_size);

Dies konvertiert die Netzwerk-Ganzzahl wieder in eine reguläre Ganzzahl.