2017-02-17 9 views
0

質問によると、このPHP関数を使用して、特定のポートのIPアドレスが応答しているかどうかを確認しています。Windowsマシンでpingを実行してオンラインになっているかどうか確認するには?

function ping($host) { 

    $port = 5900; //RealVNC default port 
    $waitTimeoutInSeconds = 0.01; 

    if ($fp = @fsockopen($host, $port, $errCode, $errStr,$waitTimeoutInSeconds)) { 
     fclose($fp); 
     echo '<img src="online.png"> '; 
    } else { 

     echo '<img src="offline.png"> '; 
    } 
} 

それが何かを有効にするか、インストールせずに到達可能であるかどうかをチェックするために、このスクリプトで「pingを実行」することができ窓(7,8,10)上の任意のデフォルトポートはありますか? - ネットワーク内の500台のPCの状態を確認したい

+0

なぜ "ピング" *ホスト* *? ref:http://php.net/manual/en/function.socket-create.php – alexus

答えて

0

参照:代わりに "ピング" *ポートのPHP: socket_create - Manual

<?PHP 
     function ping($host, $timeout = 1) { 
       /* ICMP ping packet with a pre-calculated checksum */ 
       $package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost"; 
       $socket = socket_create(AF_INET, SOCK_RAW, 1); 
       socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0)); 
       socket_connect($socket, $host, null); 

       $ts = microtime(true); 
       socket_send($socket, $package, strLen($package), 0); 
       if (socket_read($socket, 255)) 
         $result = microtime(true) - $ts; 
       else $result = false; 
       socket_close($socket); 

       return $result; 
     } 
?> 
+0

このコードは、エラーが発生しましたsocket_set_option()は、パラメータ1がリソースであることを期待しています。 – Houdasek

+0

コードは11歳ですが、最近のPHPの変更により動作しない可能性があります。コードは主に参照用です(あなたの環境でコピーして貼り付けるのではなく) – alexus

+0

okありがとうございます:) – Houdasek

0

Windows環境の場合は無料のIPスキャナを、Linux環境の場合はnmapを使用して、特定のネットワークIDのフルスキャンを実行できます。 nmapの使用

次のコマンド:

nmap -sP 192.168.2.1/24 

が192.168.2.xネットワーク上のすべてのオンラインクライアントが表示されます。

ここではPHPのIPスキャナスクリプトへのリンクです:それは最小限のインストールでない限り https://gist.github.com/blazeeboy/808796

Nmapが、通常、Linuxオペレーティングシステムにデフォルトで付属しています。

+0

残念ながら私はこれをPHPで行う必要があります – Houdasek

+0

phpでシステムコマンドを使用できませんか? –

+0

私の答えを更新しました –

関連する問題