在Windows机器上ping什么端口以检查它是否在线?

时间:2017-02-17 21:46:22

标签: networking php ping

正如问题所说,我正在使用这个PHP函数来检查特定端口上的IP地址是否正在回答。

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"> ';
    }
}

Windows(7,8,10)上是否有任何默认端口可以&#34; pinged&#34;通过此脚本检查是否可以在不启用或安装任何内容的情况下访问它? - 我想查看网络中500台PC的状态。

2 个答案:

答案 0 :(得分:0)

如果您在Windows环境中使用,则可以使用查找免费的IP扫描程序,或者您可以在Linux环境中使用nmap来运行给定网络ID的完整扫描。

使用nmap的下一个命令:

nmap -sP 192.168.2.1/24

将显示192.168.2.x网络上的所有在线客户端。

这是一个指向php ip scanner脚本的链接: https://gist.github.com/blazeeboy/808796

Nmap通常默认使用Linux操作系统,除非它是最小的安装。

答案 1 :(得分: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;
        }
?>