【问题标题】:What is the second paramenter of TCPSocket.send in Ruby?Ruby中TCP Socket.send的第二个参数是什么?
【发布时间】:2010-11-11 23:09:09
【问题描述】:

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

@@socket.send login_message, 0

(这很好用)

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

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

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

谢谢 伦纳特

【问题讨论】:

    标签: ruby sockets send


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 2012-05-04
      • 2016-03-25
      • 1970-01-01
      • 2011-10-22
      • 2017-05-02
      • 1970-01-01
      相关资源
      最近更新 更多