代码之家  ›  专栏  ›  技术社区  ›  Lennart Koopmann

Ruby中TCPSocket.send的第二个参数是什么?

  •  2
  • Lennart Koopmann  · 技术社区  · 17 年前

    我使用这行代码通过Ruby(1.8.7)套接字发送消息:

    @@socket.send login_message, 0
    

    (这个很好用)

    我首先认为这是一个C风格的消息长度。这就是为什么我使用login_message.length作为第二个参数。这很管用,但我遇到了一个奇怪的行为:

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

    非常感谢。

    1 回复  |  直到 17 年前
        1
  •  4
  •   mark4o    17 年前

    send() 系统调用。通常它应该是0,但可能类似于 Socket::MSG_OOB (发送带外数据)。对于Ruby 1.9,这在 BasicSocket

    推荐文章