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


これはフラグパラメータであり、http://www.opengroup.org/onlinepubs/9699919799/functions/send.html [+ send()+]システムコールの最後のパラメータと同じです。 通常は0ですが、 `+ Socket

MSG_OOB +`(帯域外データを送信するため)のようなものである可能性があります。 Ruby 1.9ではこれはhttp://ruby-doc.org/core-1.9/classes/BasicSocket.html#M001746 [BasicSocket]の下に文書化されています。