2012-08-09 44 views
0

我想编写一个类似于Enterprise Network Console的PHP脚本,但是用于PC和设备的LAN而不是服务器的WAN。如何判断我的网络上的某台计算机是否使用PHP?

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

检查PC是否开启或关闭的最佳方法是什么?我使用fSocketOpen()来测试服务器,但大多数PC不是服务器。他们对ping做出响应,但没有端口可用于连接,这意味着PHP's fSocketOpen()将无法​​正常工作,但ping就是这样。

+1

为什么你会尝试在PHP中做到这一点? – meagar 2012-08-09 00:45:35

+0

我需要通过网络界面访问它,因为我的VLAN部分是物理上相距数英里的许多部分之一。 – CoderWalker 2012-08-09 00:47:55

+2

我从帖子中删除了*吨*或多或少的绒毛,并对其进行了编辑以提出具体的可回答问题,从而避免了被关闭。你的帖子应该包含*一个问题*,并且应该尽可能短。没有理由对所有这些背景信息做出如此之大的贡献,只是出来并*提出问题*。此外,请[不要添加签名或标语到您的帖子](http://stackoverflow.com/faq#signatures)。 – meagar 2012-08-09 00:49:56

回答

2

您可以使用系统命令并捕获结果的stdout。

只需搜索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; 
} 
+0

这与此有何联系? – CoderWalker 2012-08-09 01:03:49

+1

不要打扰查找端口,创建套接字或模仿ping命令。通过PHP执行它们来使用OS命令。 我正在给我的答案添加一个示例。 – Tim 2012-08-09 01:12:01

相关问题