如何判断网络上的机器是否使用 PHP 打开


How can I tell if a machine on my network is on with PHP?

我想编写一个类似于企业网络控制台的PHP脚本,但用于PC和设备的LAN,而不是服务器的WAN。

我希望能够检查PC,复印机等是否已连接到网络。我想知道即使它们已关闭,但这是不可能的,因为 PC 会忽略数据包,除非它是局域网唤醒数据包,对吧?

检查 PC 是打开还是关闭的最佳方法是什么?我用fSocketOpen()来测试服务器,但是大多数PC都不是服务器。它们响应ping,但没有打开端口进行连接,这意味着PHP的fSocketOpen()不起作用,但ping可以。

您可以使用系统命令并捕获标准输出以获取结果。

只需搜索PHP的popen(http://uk3.php.net/popen)示例。

echo run('ping 192.168.1.5');
function run($command) {
    $command .= ' 2>&1';
    $handle = popen($command, 'r');
    $log = '';
    while (!feof($handle)) {
        $line = fread($handle, 1024);
        $log .= $line;
    }
    pclose($handle);
    return $log;
}