2013-02-28 37 views
1

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

像这样:

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

它总是返回“连接超时 - 110”,但端口是开放的,有服务运行在那里。

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

+1

防火墙上非标准端口阻止传出连接? – 2013-02-28 23:22:56

+0

我不这么认为,无论如何,我该如何检查? – Darkeden 2013-02-28 23:54:34

回答

2

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'; 
} 
+0

我试图检查之前的FALSE值和更高的超时(如10),但它从来没有工作......我总是得到相同的休止“连接超时” – Darkeden 2013-03-01 22:49:02