繁体   English   中英

检查计算机是否已打开

[英]Check to see if computer is on

我写了一个简单的php页面,它发送了几个运行Windows 7的计算机上的wake-on-lan数据包。

如何检查计算机是否已开启(假设互联网在该位置工作)?

我可以在加载页面时如何ping计算机以检查响应吗?

附加信息:计算机都位于不同的位置,在这些位置,它们具有IP的动态DNS设置,并且都在与其他计算机的路由器之后。

我可以通过Windows RDC远程桌面所有计算机,我打开端口3389为他们以及一个单独的WOL端口,所以他们有两个开放的端口

然后尝试打开远程桌面会话?

<?php
$timeout = 10;
$socket = @fsockopen( 'ip-of-the-client', 3389, $errno, $errstr, $timeout );
$online = ( $socket !== false );

var_dump( $online );

代码中的@是因为当无法建立连接时,fsockopen将抛出PHP警告。

编辑 :为了清楚起见; 3389是用于创建远程桌面连接的默认端口。

关于这个:

我可以通过Windows RDC远程桌面所有计算机,我打开端口3389为他们以及一个单独的WOL端口,所以他们有两个开放端口。

自RDP打开以来,最好的选择(除了可以阻止的ICMP ping)可能是打开端口3389的TCP套接字,这将确认计算机在线并完全启动(即RDP服务正在运行) 。

只需使用fsockopen,就像这样:

function ServiceOnline($ip, $port = 3389) {
    $rdp_sock = @fsockopen($ip, $port, null, null, 5); // 5 sec timeout so that it doesn't hang for a whole minute if not available
    if (!$rdp_sock) {
        return false;
    } else {
        fclose($rdp_sock);
        return true;
    }
}

如果另一个服务可用作回退,您也可以使用此代码,例如,通过传入$port参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM