我正在尝试使用 PHP 中的套接字与给定 IP 和端口建立简单的 TCP/IP 连接。
我收到一条错误消息,显示“无法立即完成非阻塞套接字操作”。下面是我的代码:
<?php
$address = 'myhost.com';
$service_port = 1234;
$timeout = 1000;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_nonblock($socket);
$error = NULL;
$attempts = 0;
while (!($connected = @socket_connect($socket, $address, $service_port)) && ($attempts < $timeout)) {
$error = socket_last_error();
if ($error != SOCKET_EINPROGRESS && $error != SOCKET_EALREADY) {
echo socket_strerror($error) . "\n";
socket_close($socket);
return NULL;
}
usleep(1000);
$attempts++;
}
?>
有任何想法吗?我知道目标主机 ip 或端口没有问题。