2

我正在使用这一行通过 Ruby (1.8.7) 套接字发送消息:

@@socket.send login_message, 0

(这工作正常)

第二个参数是干什么用的?我在 Ruby API 文档中找不到 send 方法...

我首先认为这是一些 C 风格的消息长度。这就是我使用 login_message.length 作为第二个参数的原因。那行得通,但我遇到了一个奇怪的行为:

当第二个参数是奇数时,一切正常。如果它是偶数,则最后一个字符在另一端接收时会丢失(另一端是带有 C 套接字的 C++ 程序)。我用 Wireshark 检查了网络流量,发现数据包看起来不错。所有的数据都是完整的。为什么我收到最后一个字符会丢失?

谢谢伦纳特

4

1 回答 1

4

这是标志参数,与send()系统调用的最后一个参数相同。通常它应该是 0,但可能类似于Socket::MSG_OOB(发送带外数据)。对于 Ruby 1.9,这记录在BasicSocket下。

于 2009-07-18T17:12:24.433 回答