代码之家  ›  专栏  ›  技术社区  ›  dwo

使用Ruby TCPSocket指定数据包大小

  •  0
  • dwo  · 技术社区  · 16 年前

    @socket = TCPSocket.new(IP,PORT) 它可以工作,直到我要发送的文本长度超过1024个字符。然后Ruby将消息分成两部分。C++和C语言将消息作为一个报文发送,所以C语言应用程序不需要加入这些部件。

    消息的长度永远不会超过约2000个字符。是否有可能设置TCPSocket的数据包大小?

    编辑: 您所有的答案都是正确的,但在阅读了大量ruby socket问题后,我找到了解决方案:

    socket.send(msg,0x4)
    

    不拆分邮件。直接发送的选项会产生不同。

    我不知道这在互联网上是否有效,但它在我的测试实验室中有效。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Nikolai Fetissov    16 年前

    TCP是一种流协议。它不关心应用程序“消息”。理论上,TCP可以在一个数据包或1024个数据包中发送1024个字节。 MTU 是1500字节。因素 IP header ,通常为20,以及 TCP header tcpdump wireshark .

        2
  •  0
  •   tadman    16 年前

    实际上,传输数据所需的数据包数量对流的影响应该很小。您可能会在实现中遇到缓冲问题。

    套接字只应在其处于“可写”状态时写入,否则可能会溢出输出缓冲区并导致网络堆栈断开连接。

    @socket.write(my_data)
    @socket.flush
    
    推荐文章