服务器上运行的程序正在侦听连接。它使用 .NET 中的 TcpListener。使用netstat,端口正在侦听。
使用测试仪数据发送器时,接受连接并处理数据。使用 PHP 套接字执行相同操作无法正常工作。它返回 errno 111。
在一些与 PHP 相关的套接字问题中寻找答案,据说这可能是以下三种情况之一:没有 http 服务器、TCP 队列已满或防火墙。
网络服务器
$port = 6000;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, "remote.ip", $port);
socket_send($socket, $data, strlen($data), 1);
socket_close($socket);
服务器
tcp = new TcpListener(IPAddress.Any, port);
tcp.Start(backlog);
sock = tcp.AcceptSocket();
警告:socket_connect():无法连接[111]:连接被拒绝 page.php 第 10 行
警告:socket_send():无法写入套接字 [32]:管道损坏 page.php 第 11 行
大多数时候,Web 主机未使用适当的 PHP 版本,或者未启用
php sockets
进行编译。我最终托管了自己的网站并可以访问控制台。使用此选项进行编译,并在适当的 php.ini
中启用它会有所帮助。
这在我对问题的评论中有所体现:
“本地尝试正在发挥作用。此问题的主要尝试来自 Web 主机,并使用 IIS 在本地完成。”