Frage

Ich benutze diese Zeile eine Nachricht über Ruby zu senden (1.8.7) Buchse:

@@socket.send login_message, 0

(Dies funktioniert gut)

Was ist der zweite Parameter für? Ich kann die Sendemethode in Ruby API-Dokumentation finden ...

Ich dachte zuerst, dass es einig C-Stil Länge der Nachricht ist. Aus diesem Grund habe ich login_message.length als zweiten Parameter. Das funktionierte aber ich stieß auf ein seltsames Verhalten:

Alles funktioniert gut, wenn der zweite Parameter eine ungerade Zahl ist. Wenn es eine gerade Zahl ist das letzte Zeichen wird bei Empfang auf der anderen Seite verloren (Die andere Seite ist ein C ++ Programm mit einem C-Buchse). Ich inspizierte den Netzwerkverkehr mit Wireshark und bemerkte, dass die Pakete gut aussehen. Alle Daten abgeschlossen ist. Warum ist das letzte Zeichen verloren, wenn ich es erhalten?

Danke Lennart

War es hilfreich?

Lösung

Dies ist der Flags-Parameter, der gleiche wie der letzte Parameter auf die send() Systemaufruf. Normalerweise sollte es 0 sein, kann aber so etwas wie Socket::MSG_OOB sein (out-of-Band-Daten zu senden). Für Ruby 1.9 wird dies unter Basic .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top