2009-07-18 6 views
2

Ich benutze diese Zeile eine Nachricht über Ruby (1.8.7) Buchse zu senden:Was ist der zweite Parameter von TCPSocket.send in Ruby?

@@socket.send login_message, 0 

(Dies funktioniert gut)

Was für den zweiten Parameter ist? Ich kann die send-Methode in den Ruby-API-Dokumenten nicht finden ...

Ich dachte zuerst, dass es eine C-Stil-Länge der Nachricht war. Aus diesem Grund habe ich login_message.length als zweiten Parameter verwendet. Das hat funktioniert, aber ich habe ein seltsames Verhalten festgestellt:

Alles funktioniert gut, wenn der zweite Parameter eine ungerade Zahl ist. Wenn es eine gerade Zahl ist, geht das letzte Zeichen beim Empfang auf der anderen Seite verloren (Die andere Seite ist ein C++ Programm mit einem C-Sockel). Ich habe den Netzwerkverkehr mit Wireshark überprüft und festgestellt, dass die Pakete gut aussehen. Alle Daten sind vollständig. Warum ist der letzte Charakter verloren, wenn ich ihn erhalte?

Danke Lennart

Antwort

4

Dies ist der Parameter flags, der gleiche wie der letzte Parameter auf den send() Systemaufruf. Normalerweise sollte es 0 sein, aber vielleicht Socket::MSG_OOB (um Out-of-Band-Daten zu senden). Für Ruby 1.9 ist dies dokumentiert unter BasicSocket.

+0

Vielen Dank! :) –

Verwandte Themen