网络唤醒 php,php 远程唤醒电脑 php源码远程唤醒电脑 远程开机

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

2c0b0ad480070ffc2971066421b72124.png

2.udp测试工具 向udp服务端发送唤醒包aeb57779e207edd8cf7e781aee4603c9.png

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

0ad7d3363a597eb9a1c893f13484a726.png

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

c2d73a9caa52a8384d4af667fbea43a1.png

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

b057fb8503d29ac84827acd773c60102.png

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

8a4f3185a2b1c1daf9b498dcafac6d51.png

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);

}

}

?>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值