在PHP限制中发送tcp数据包

时间:2012-01-31 10:08:30

标签: tcp max fwrite

我试图使用fwrite向tcp服务器发送一个大数据包(9170字节)

            fwrite($this->_socket, $data);

问题是它首先发送8192然后发送左978字节 我想减少每次发送时从8192发送到1444的金额

4 个答案:

答案 0 :(得分:1)

TCP层将执行此操作,您不必这样做。如果您写入9,880个字节且服务器仅尝试读取其中的1,444个字节,则它将达到前1,444个字节。下次服务器尝试读取时,它将获得下一个字节或字节。

客户端无需安排其传输以满足服务器的接收要求。 TCP层的流量控制将自动处理。

你正在解决一个无问题。

答案 1 :(得分:0)

根据fwrite文档,fwrite的可选第三个参数是length。它指定在到达字符串结尾之前将发送的最大字节数。这不是解决问题的方法吗?

请参阅文档下面的注释中的示例,它们包含如何使用fwrite和length的示例。

答案 2 :(得分:0)

$ data是一个字符串吗?您可以使用substr()进行拆分,然后继续发送。

答案 3 :(得分:0)

在这种情况下,只需发送1444个字节并等待来自服务器的用户级确认消息。这将给出一次发送1444个字节的外观。它也会很慢。

根本问题是TCP不能发送超过一个字节的消息 - 它会传输字节。

在TCP上添加可以发送消息的协议。