gpt4 book ai didi

php - 为什么 stream_socket_server 不阻止来自 Windows 上其他套接字的端口?

转载 作者:可可西里 更新时间:2023-11-01 11:48:49 25 4
gpt4 key购买 nike

我有一个 reactphp 脚本打开多个端口进行监听。代码归结为尝试在端口 x 上打开一个套接字,如果被占用,则选择端口 +1。

我发现我可以为同一个端口打开多个套接字而不会出现错误消息,这使得上述查找“空闲”端口的方法无效:

var_dump($s1 = stream_socket_server("tcp://127.0.0.1:7777", $errno, $errstr));
var_dump($s2 = stream_socket_server("tcp://127.0.0.1:7777", $errno, $errstr));

两个调用都返回一个具有不同 ID 的资源。为什么会发生这种情况,端口是否可能已经有来自同一进程的打开套接字(没有在套接字上保留簿记)?

PS.: 从不同进程打开两个套接字如预期的那样失败。

相关问题:Multiple UDP Sockets to listen for specific source on the same port

更新

参见 https://3v4l.org/6eWY1 ,似乎描述的行为仅适用于 Windows 版本的 PHP。

最佳答案

看看this technique测试端口是否打开。

我用你的代码得到了相同的结果,这种技术对我来说很有用,可以确定端口是否已经被相同的进程打开。

如果您不介意开销,那可能是一种选择。

关于php - 为什么 stream_socket_server 不阻止来自 Windows 上其他套接字的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36036027/

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