[英]Specify packet size with Ruby TCPSocket
我正在使用Ruby测试使用套接字的C#网络应用程序。 我用@socket = TCPSocket.new(IP,PORT)
打开连接,它可以正常工作-直到我要发送的文本超过1024个字符为止。 然后,Ruby将消息分为两部分。 C ++和C#将消息作为一个数据包发送,因此C#应用程序不需要加入这些部分。
消息永远不会超过大约。 2000个字符。 是否可以设置TCPSocket的数据包大小?
编辑:您的所有答案都是正确的,但是在阅读了很多关于此处的红宝石套接字问题后,我找到了解决方案:
socket.send(msg,0x4)
不拆分消息。 直接发送的选项有所不同。
我不知道这是否可以在Internet上使用,但可以在我的测试实验室中使用。
谢谢。
实际上,传输数据所需的数据包数量对流的影响很小。 您可能遇到的是实现中的缓冲问题。
仅当套接字处于“可写”状态时,才应写入套接字,否则可能会导致输出缓冲区溢出并导致网络堆栈断开连接的风险。
由于TCP / IP套接字的作用就像一个简单的流,数据按顺序传入和传出,因此,数据包分段的影响应该几乎不相关,除了对时间非常敏感的应用程序外。
写入套接字时,请确保刷新输出缓冲区,否则可能还有一些数据等待发送:
@socket.write(my_data)
@socket.flush
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.