php 远程唤醒电脑 php源码远程唤醒电脑 远程开机

 

1.局域网扫描ip和网卡地址

php 远程唤醒电脑 php源码远程唤醒电脑 远程开机_第1张图片

2.udp测试工具 向udp服务端发送唤醒包php 远程唤醒电脑 php源码远程唤醒电脑 远程开机_第2张图片

3.udp测试工具接收到的包

php 远程唤醒电脑 php源码远程唤醒电脑 远程开机_第3张图片

 

4.手机app pingTools 工具里的网络唤醒工具,发送唤醒包

php 远程唤醒电脑 php源码远程唤醒电脑 远程开机_第4张图片

 

 

5.接收到手机app发送过来的包

php 远程唤醒电脑 php源码远程唤醒电脑 远程开机_第5张图片

6.对比包的内容是否一致。

php 远程唤醒电脑 php源码远程唤醒电脑 远程开机_第6张图片

 

7.唤醒包内容是什么?

看看这个解释:https://blog.csdn.net/u013363811/article/details/44343437/

3.1 魔术包的组成
  魔术包是用16进制表示的数据包,它由固定的前缀数据以及固定重复次数的目标主机MAC地址所组成。所谓固定前缀数据即6对“FF”,所谓固定重复次数即16次,也就是说魔术包是由12个“F”加重复16次的主机MAC地址组成,例如本文所用试验机的MAC地址为“28-D2-44-35-68-A7”,所以使该机远程开机的魔术包为: 
  “0xFFFFFFFFFFFF28D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A7”
————————————————
版权声明:本文为CSDN博主「CaroseKYS」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013363811/article/details/44343437/

8.php代码通过socket  发送唤醒包

https://www.hangge.com/blog/cache/detail_1399.html




	 
	远程唤醒电脑
 
	  
	
	
  


 
wake_on_wan(); ?>
 "目标机器已经是开机状态的.",
        1 => "socket_create 方法执行失败",
        2 => "socket_set_option 方法执行失败",
        3 => "magic packet 发送成功!",
        4 => "magic packet 发送成功!"
    );
     
    function __construct($hostname,$mac,$port,$ip = false)
    {
        $this->hostname = $hostname;
        $this->mac      = $mac;
        $this->port     = $port;
        if (!$ip)
        {
            $this->ip   = $this->get_ip_from_hostname();
        }
    }
 
    public function wake_on_wan()
    {
        if ($this->is_awake())
        {
            return $this->msg[0]; // 如果设备已经是唤醒的就不做其它操作了
        }
        else
        {
            $addr_byte = explode(':', $this->mac);
            $hw_addr = '';
            for ($a=0; $a<6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a]));
            $msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
            for ($a=1; $a<=16; $a++) $msg .= $hw_addr;
            // 通过 UDP 发送数据包
            $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
             
            if ($s == false)
            {
                return $this->msg[1]; // socket_create 执行失败
            }
 
            $set_opt = @socket_set_option($s, 1, 6, TRUE);
 
            if ($set_opt < 0)
            {
                return $this->msg[2]; // socket_set_option 执行失败
            }
 
            $sendto = @socket_sendto($s, $msg, strlen($msg), 0, $this->ip, $this->port);
             
            if ($sendto)
            {
                socket_close($s);
                return $this->msg[3]; // magic packet 发送成功!
            }
 
            return $this->msg[4]; // magic packet 发送失败!
             
        }
    }
 
    private function is_awake()
    {
        $awake = @fsockopen($this->ip, 80, $errno, $errstr, 2);
         
        if ($awake)
        {
            fclose($awake);
        }
         
        return $awake;
    }
 
    private function get_ip_from_hostname()
    {
        return gethostbyname($this->hostname);
    }
 
}
?>

 

你可能感兴趣的:(三块钱的博客)