Php 套接字\u创建\u侦听不适用于windows中的所有接口
我正在使用Symfony 4打开TCP侦听器套接字。它在linux中工作得很有魅力。我也必须让它在Windows操作系统中工作 如果我执行Symfony命令,它将打开127.0.0.1:4501上的套接字,我可以从位于同一台机器上的客户端进行连接。当我试图从局域网内的其他PC连接到局域网外的其他设备(我已将端口转发到路由器)时,就会出现问题 这是打开套接字的代码:Php 套接字\u创建\u侦听不适用于windows中的所有接口,php,windows,symfony,sockets,Php,Windows,Symfony,Sockets,我正在使用Symfony 4打开TCP侦听器套接字。它在linux中工作得很有魅力。我也必须让它在Windows操作系统中工作 如果我执行Symfony命令,它将打开127.0.0.1:4501上的套接字,我可以从位于同一台机器上的客户端进行连接。当我试图从局域网内的其他PC连接到局域网外的其他设备(我已将端口转发到路由器)时,就会出现问题 这是打开套接字的代码: if (!$localSocket = socket_create_listen($listeningPort)) {
if (!$localSocket = socket_create_listen($listeningPort))
{
throw new \RuntimeException('Could not create socket.');
}
如果在命令promt上执行此命令,则会看到端口在127.0.0.1:4501上打开,而不是在所需的值0.0.0.0:4501上打开
如何能够监听所有网络接口并使其工作
谢谢。我在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.');
}
}