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秒を使用することをお勧めします。

また、いつ失敗するかを知るのではなく、fsockopen()forの結果を確認する必要があります。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 に答える