因为最近一段时间远程电脑的需求越来越多,就研究了一下WoL的原理,没想到如此简单。于是便用WinUI写了个小软件:WinWoL。
Wake on LAN 概述
即“LAN口唤醒”,或者说“局域网唤醒”。这种技术有多种别名,在此不多赘述 (可以参考:Wake on LAN)。
WoL是由硬件设备提供的一项管理功能,可以通过网卡向主板发送指令来切换电脑的电源状态。甚至可以直接将电脑从S5关机状态唤醒到S0开机。
WoL有多种标准,目前家用PC的事实通用标准是AMD提出的Magic Packet。
Magic Packet 概述
关于Magic Packet的详细介绍,可以直接参考:Magic Packet Technical White Paper。
这是由AMD公司提出的网络唤醒协议,即发送远程唤醒数据包 (Magic Packet) 。
虽然Magic Packet只是AMD公司所开发的一项技术,但是受到了几乎所有网卡制造商的支持,因此,大多数流行网卡都能与之很好地兼容(包括2010年后生产的主板)。
Magic Packet 解析
根据Magic Packet Technical White Paper中所言,用于WoL的Magic Packet实际上很简单,它的结构是:
1 | FF FF FF FF FF FF 11 22 33 44 55 66 11 22 33 44 55 66 ....... |
开头是6个十六进制数0xFF
,然后重复16次待唤醒电脑的Mac地址 (此处假设待唤醒电脑Mac地址为:11:22:33:44:55:66
)。
代码实现
我简单的写了一个小项目,WinWoL。使用WinUI开发,可供参考。
除此之外还有一个更单纯的,使用C++开发的命令行程序:SimpleWoL