[英]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.