RubyでTCP Socket.sendの2番目のパラメータは何ですか?
質問
私は、Ruby(1.8.7)ソケット経由でメッセージを送信するには、このラインを使用しています
@@socket.send login_message, 0
(これは正常に動作します)。
のための2番目のパラメータは何ですか?私はRubyのAPIドキュメントにsendメソッドを見つけることができません...
私が最初にそれがメッセージのいくつかのCスタイルの長さだと思いました。これは私が2番目のパラメータとしてlogin_message.length使用した理由です。それは働いていたが、私は奇妙な行動が発生します:
2番目のパラメータは奇数であるとき、すべてが正常に動作します。それは最後の文字が他側の受信に失われる偶数なら(他の側はCソケットとC ++のプログラムです)。私はWiresharkのでネットワークトラフィックを検査し、パケットが良く見えることに気づきました。すべてのデータは完了です。私はそれを受信したときに、なぜ最後の文字が失われる?
ありがとう レナート
解決
これは、flagsパラメータ、 send()
の最後のパラメータと同じですのシステムコール。通常は、0でなければなりませんが、(アウト・オブ・バンド・データを送信する)Socket::MSG_OOB
のようなものかもしれません。 Ruby 1.9のために、これは BasicSocket の下に文書化されています。
所属していません StackOverflow