質問

私は、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 の下に文書化されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top