簡體   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