我正在检查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 110",但是端口是打开的,并且有服务在那里运行。
如果我更改了端口(比如80),它就会返回成功,但是为什么不是在9998端口上呢?
发布于 2013-03-01 05:33:46
1秒的连接超时时间不是很长。即使主机/端口有效,网络延迟也足以触发该延迟。我建议至少用2.5到5秒来代替。
另外,您应该检查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';
}https://stackoverflow.com/questions/15147614
复制相似问题