大家好,欢迎来到IT知识分享网。
概要
简单流程
- 必须网卡支持,BIOS 中启用网络唤醒(Wake-on-LAN)
进入BIOS设置:在电脑启动时,按制造商指定的键(如DEL、F2、F10或ESC)进入BIOS设置界面。
导航到电源管理选项:在BIOS菜单中,找到并进入“电源管理”或类似标题的选项。
启用网络唤醒功能:在电源管理设置中,寻找与“远程唤醒”、“ACPI”(高级配置和电源接口)或“网络唤醒”相关的选项,并启用它们。具体的选项名称可能因不同的主板制造商而异,但通常你会找到类似于“允许从S5状态唤醒”或“允许网络唤醒”的设置。
保存更改并退出:完成设置后,保存更改并退出BIOS设置。请注意,不是所有主板和网卡都支持这些功能,因此在尝试远程开机之前,建议检查你的硬件是否满足条件。此外,某些主板可能还需要在操作系统中安装额外的软件或驱动程序才能实现远程开机功能
- 检查设备管理 是否开启远程唤醒
键盘WIN+X,选中设备管理器打开
访问网卡设置,确保网卡的电源管理设置允许计算机通过网络信号被唤醒。这通常涉及在网卡的“电源管理”标签页中启用“允许此设备唤醒计算机”的选项。 - 工具检测,下载Fing
连接当前wifi,查看当前连接设备
选中需要唤醒的设备,点击LAN唤醒,检查设备是否唤醒成功。请注意,设备关机后,检查设备网口灯是否闪烁,唤醒设备相当于设备关机状态变成了睡眠/休眠状态,通过mac地址发送包唤醒设备为工作状态,如果需要唤醒设备,那么网口灯必须是在线闪烁状态。如果设备关机后,网口等无法闪烁,请检查上方配置项或升级网卡驱动等其他因素
- c# 代码唤醒
代码唤醒,相当于就是模拟发送唤醒魔包
WOL魔术包是有12个F跟随16个重复的mac地址不含‘:’或‘-’符号构成
public static void WakeUp(string mac) {
try {
if (mac.Split('-').Length == 6) {
string macStr = mac.Replace('-', ' '); ; byte[] macByteArray = HexStringSToByteArray(macStr); UdpClient client = new UdpClient(); client.Connect(IPAddress.Broadcast, 1234); byte[] packet = new byte[17 * 6]; for (int i = 0; i < 6; i++) {
packet[i] = 0xFF; } for (int i = 1; i <= 16; i++) {
for (int ii = 0; ii < 6; ii++) {
packet[i * 6 + ii] = macByteArray[ii]; } } int a = client.Send(packet, packet.Length); } } catch (Exception ex) {
} } /// <summary> /// 2位16进制转int /// </summary> /// <param name="hex"></param> /// <returns></returns> public static int HexStringToInt(string hex) {
int num1 = 0; int num2 = 0; char[] nums = hex.ToCharArray(); if (hex.Length == 2) {
for (int i = 0; i < nums.Length; i++) {
String strNum = nums[i].ToString().ToUpper(); switch (strNum) {
case "A": strNum = "10"; break; case "B": strNum = "11"; break; case "C": strNum = "12"; break; case "D": strNum = "13"; break; case "E": strNum = "14"; break; case "F": strNum = "15"; break; default: break; } if (i == 0) {
num1 = int.Parse(strNum) * 16; } if (i == 1) {
num2 = int.Parse(strNum); } } } return num1 + num2; } /// <summary> /// 16进制字符串转byte[] 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 /// </summary> /// <param name="hexValues"></param> /// <returns></returns> public static byte[] HexStringSToByteArray(string hexValues) {
string[] hexValuesSplit = hexValues.Split(' '); byte[] val = new byte[hexValuesSplit.Length]; int i = 0; foreach (string hex in hexValuesSplit) {
int value = HexStringToInt(hex); val[i] = (byte)value; i++; } return val; }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/115639.html