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