gpt4 book ai didi

php - socket_write : How to send multiple packets without closing the connection?

转载 作者:行者123 更新时间:2023-12-03 11:53:10 26 4
gpt4 key购买 nike

我有这个代码:

$requestCount = 0;
$maxRequestCount = 10;

$ip = "192.168.0.100";
$port = 10000;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$connect = socket_connect($socket, $ip, $port);

while(true){
if($requestCount == $maxRequestCount){break;}

$write = socket_write($socket, $getHTTP, strlen($getHTTP));
echo "Sending TCP message... OK (lenght = $write).<br>";

$out = '';
while($out = socket_read($socket, 65536)){echo "Reading response... OK (lenght = ". strlen($out).")<br>";}

echo "<br>";

usleep(100);
$requestCount++;
}

socket_close($socket);

当发出第一个请求时,连接已经关闭(FYN,ACK)。如何发送 10 个数据包然后关闭连接?

enter image description here

最佳答案

你不能。就像现实世界中的对话一样,没有办法强制不感兴趣的人继续听下去。同样,您无法阻止套接字另一端的计算机关闭它。

从代码中的变量名来看,您似乎正在发送 HTTP 请求(只是在不同的端口上)。 HTTP 服务器可以选择在响应他们在该连接中获得的第一个请求后关闭连接。这似乎就是这里发生的事情。您将必须创建一个新套接字并重新连接以发送每个请求。

另一个注意事项:TCP 没有“数据包”。它是一个面向流的连接。我知道这听起来像是一个学究式的区别,但是问你如何“在不关闭连接的情况下发送多个数据包”是没有意义的,因为你无法控制 TCP 如何发送你的消息。

关于php - socket_write : How to send multiple packets without closing the connection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29505617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com