Win10关机可以网络唤醒,睡眠无法网络唤醒?
作者:卡卷网发布时间:2024-12-12 00:26浏览数量:98次评论数量:0次
/**
* 发送网络唤醒
* @param $mac_address mac地址
* @param $broadcast_address 广播地址
* @param $port 端口号(默认都是7或者9)
* @return array
*/
public function sendWol()
{
// 设置网络唤醒:远程唤醒电脑WOL(Wake On LAN - 局域网唤醒)
// https://blog.csdn.net/a843334549/article/details/107290137/
// 目标计算机的MAC地址
$macAddress = '60-BE-B4-01-FD-B5';
// 设置目标IP地址和端口(通常为9)
$ip = '255.255.255.255'; // 广播地址
$port = 9;
// 将MAC地址转换为二进制格式(截取mac地址,有可能是 : 或者 -)
$macBytes = explode('-', $macAddress);
$macBinary = '';
foreach ($macBytes as $byte) {
$macBinary .= chr(hexdec($byte));
}
// 构造WOL魔术包
$magicPacket = str_repeat(chr(0xFF), 6) . str_repeat($macBinary, 16);
// 创建UDP socket
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if ($socket === false) {
die('Socket creation failed: ' . socket_strerror(socket_last_error()));
}
// 设置socket为广播模式
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);
// 发送魔术包
$result = socket_sendto($socket, $magicPacket, strlen($magicPacket), 0, $ip, $port);
if ($result === false) {
die('Magic packet send failed: ' . socket_strerror(socket_last_error($socket)));
}
// 关闭socket
socket_close($socket);
return ['code'=>200, 'msg'=>'Magic packet sent successfully', 'data'=>[]];
}
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
- 上一篇:为什么说Linux下“一切皆文件”?
- 下一篇:有哪些好玩的开源游戏?
相关推荐

你 发表评论:
欢迎