【发布时间】:2009-11-02 13:31:32
【问题描述】:
我正在使用 Ruby 测试一个使用套接字的 C# 网络应用程序。我打开与@socket = TCPSocket.new(IP,PORT) 的连接并且它可以工作 - 直到我要发送的文本长度超过 1024 个字符。然后 Ruby 将消息分成两部分。 C++ 和 C# 将消息作为一个数据包发送,因此 C# 应用程序不需要加入这些部分。
消息永远不会超过大约。 2000 个字符。是否可以设置 TCPSocket 的数据包大小?
编辑: 你所有的答案都是正确的,但是在阅读了很多关于 SO 的 ruby socket 问题之后,我找到了解决方案:
socket.send(msg,0x4)
不拆分消息。直接发送选项会有所不同。
我不知道这是否适用于互联网,但它适用于我的测试实验室。
感谢您的帮助。
【问题讨论】:
-
您不应该将 TCP 用作数据报协议。 TCP 抽象是一个流——你的服务器不应该关心单个数据包。无论如何,如果 Ruby 不会弄乱你的数据包,那么一些中介(例如路由器)可能会。