gpt4 book ai didi

php - socket_create_listen 不适用于 Windows 中的所有接口(interface)

转载 作者:行者123 更新时间:2023-12-03 12:02:58 25 4
gpt4 key购买 nike

我正在使用 Symfony 4 打开 TCP 监听器套接字。它在 linux 中就像一个魅力。我也必须让它在 Windows 操作系统中工作。

如果我执行 Symfony 命令,它会打开 127.0.0.1:4501 上的套接字,我可以从位于同一台机器上的客户端进行连接。当我尝试从 LAN 中的其他 PC 连接位于 LAN 外部的其他设备时会出现此问题(我已转发路由器中的端口)。

这是打开套接字的代码:

 if (!$localSocket = socket_create_listen($listeningPort)) 
{
throw new \RuntimeException('Could not create socket.');
}

如果我在命令提示符上执行此命令,我会看到端口在 127.0.0.1:4501 上打开,而不是我想要的值 0.0.0.0:4501

netstat -ab command

如何监听所有网络接口(interface)并使其正常工作?

谢谢。

最佳答案

我在 Windows 和 Linux 之间使用不同的代码对其进行了测试。这是结果:

//Windows
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
{
$localSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($localSocket, "0.0.0.0", $listeningPort);
socket_listen($localSocket);
}
else
{
//Linux
if (!$localSocket = socket_create_listen($listeningPort))
{
throw new \RuntimeException('Could not create socket.');
}
}

关于php - socket_create_listen 不适用于 Windows 中的所有接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59739170/

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