1

我正在尝试检查端口 9998 上的服务。为此,我正在使用fsockopen()函数。

像这样:

$host = "1.1.1.1";
$port = "9998";
$checkconn = fsockopen($host, $port, $errno, $errstr, 1);
if($checkconn >= 1){
echo 'ok';
} else {
echo "$errstr";
}

它总是返回"Connection Timed Out - 110",但是端口是打开的,并且那里正在运行服务。

如果我更改端口(如 80),它返回成功,但为什么不能在 9998 端口上?

4

1 回答 1

2

1 秒的连接超时不是很长。即使主机/端口有效,网络延迟也足以触发它。我建议至少使用 2.5 - 5 秒。

此外,您应该检查 for 的结果,fsockopen()FALSE不是< 1知道它何时失败。

尝试这个:

$host = "1.1.1.1";
$port = "9998";
$checkconn = fsockopen($host, $port, $errno, $errstr, 5);
if(!$checkconn){
    echo "($errno) $errstr";
} else {
    echo 'ok';
}
于 2013-03-01T05:33:46.737 回答