开机原理
使用udp协议,向目标机器发送开机数据包,完成开机
数据包结构
数据包:6个FF加上16次MAC地址
比如MAC地址是 11 22 33 44 55 66
,那么数据包如下
FF FF FF FF FF FF 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66........
其中MAC地址 11 22 33 44 55 66
重复16次
发送数据
拼好数据包后使用udp广播出去就可以了。简单的实现如下:
<?php
//局域网电脑开机
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
//数据包头
$arr = [0xff,0xff,0xff,0xff,0xff,0xff];
//假设目标电脑的mac地址为:11-00-6c-00-0f-3c
$mac = [0x11,0x00,0x6c,0x00,0x0f,0x3c];
$msg = '';
foreach($arr as $v){
$msg .= chr($v);
}
for($i=0;$i<16;$i++){
foreach($mac as $v){
$msg .= chr($v);
}
}
$len = strlen($msg);
//开启udp广播
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
//广播地址192.168.1.255
socket_sendto($sock, $msg, $len, 0, '192.168.1.255', 30000);
socket_close($sock);
$error = socket_last_error();
print_r($error);
参考资料:
http://blog.csdn.net/oemoon/article/details/6555229
http://blog.csdn.net/sysfs/article/details/7493383
文章作者:DOTATONG
发布日期:2017-12-03
评论