@@ socket.send login_message、0
2
0
私はRuby(1.8.7)ソケット経由でメッセージを送信するためにこの行を使っています。
@@ socket.send login_message、0
(これはうまくいきます)
2番目のパラメータは何ですか? Ruby APIドキュメントにsendメソッドが見つかりません。
私は最初、それがメッセージのCスタイルの長さだと思いました。 これが私が2番目のパラメータとしてlogin_message.lengthを使用した理由です。 それはうまくいきましたが、私は奇妙な振る舞いに遭遇しました:
2番目のパラメータが奇数の場合、すべてうまくいきます。 偶数の場合、最後の文字は反対側で受信するときに失われます(反対側はCソケットを持つCプログラムです)。 Wiresharkを使ってネットワークトラフィックを調べたところ、パケットがきれいに見えていることがわかりました。 すべてのデータが完成しました。 受け取ったときに最後の文字が失われるのはなぜですか?
Lennartありがとう
1 Answer
4
+ send()+
]システムコールの最後のパラメータと同じです。 通常は0ですが、 `+ Socket MSG_OOB +`(帯域外データを送信するため)のようなものである可能性があります。 Ruby 1.9ではこれはhttp://ruby-doc.org/core-1.9/classes/BasicSocket.html#M001746 [BasicSocket]の下に文書化されています。