首页 > 极客资料 博客日记
.NET 网络唤醒
2024-08-30 18:30:02极客资料围观33次
本篇文章分享.NET 网络唤醒,对你有帮助的话记得收藏一下,看极客之家收获更多编程知识
本文介绍下电脑设备关机的情况下如何通过网络唤醒设备,之前电源S状态 计算机Power电源状态- 唐宋元明清2188 - 博客园 (cnblogs.com) 有介绍过远程唤醒设备,后面这俩天了解多了点所以单独加个随笔
设备关机的情况下,使用网络唤醒的前提条件:
1. 被唤醒设备需要支持这WakeOnLine
要确认可以通过BIOS-电源管理页面查看,如下有Wake by Lan。并且是开启状态
2. 接有线网络(不支持无线网卡,因为设备关机情况下无线网卡是断电的),另一端启动唤醒的设备需要与被唤醒设备处于同一局域网。
关机状态下,有线网络接口是黄灯闪烁的。
我测试验证,是将大屏设备有线连接至一个路由器,然后笔记本连接路由器的wifi。大屏设备的ip是192.168.2.9,笔记本的ip是192.168.2.6。
拿到目标设备的IP以及有线Mac地址(可以在设备连接网络的属性里查看):
然后就可以使用发包工具MAGPAC.exe(下载:MAGPAC)试试唤醒,在设备关机的情况下发包就可以自动开机配置如下,输入IP以及Mac地址:
也可以自己写.NET代码调用,发数据包来唤醒:
1 private void TestButton_OnClick(object sender, RoutedEventArgs e) 2 { 3 string ip = "192.168.2.9"; 4 string macAddress = "EC:D6:8A:A6:4B:7B"; 5 SendWakeOnLan(ip,macAddress); 6 } 7 8 private static void SendWakeOnLan(string ipAddress, string macAddress) 9 { 10 try 11 { 12 // 将MAC地址转换为字节数组 13 byte[] macBytes = macAddress.Split(':').Select(x => Convert.ToByte(x, 16)).ToArray(); 14 // 创建魔术包 15 byte[] magicPacket = new byte[6 + 16 * macBytes.Length]; 16 for (int i = 0; i < 6; i++) 17 { 18 magicPacket[i] = 0xFF; 19 } 20 for (int i = 0; i < 16; i++) 21 { 22 Array.Copy(macBytes, 0, magicPacket, 6 + i * macBytes.Length, macBytes.Length); 23 } 24 // 使用UDP发送魔术包 25 UdpClient client = new UdpClient(); 26 client.Connect(ipAddress, 9); // 9是WoL的默认端口 27 client.Send(magicPacket, magicPacket.Length); 28 client.Close(); 29 30 Debug.WriteLine($@"唤醒包已发送至: {ipAddress},{macAddress}"); 31 } 32 catch (Exception ex) 33 { 34 Debug.WriteLine("发送唤醒包时发生错误: " + ex.Message); 35 } 36 }
直接远程唤醒关机设备,亲测有效!
1. 删除MAC地址中的分隔符(“:”),魔术数据包由6个0xFF字节后跟16次目标MAC地址
2. 通过UDP协议将数据包发送到指定IP和目标端口9
注意,不是广播而是指定IP发送数据包,网上有些说是用广播地址(255.255.255.255),我验证了是不起作用的。
关键字:电源状态、远程唤醒、发包工具MAGPAC.exe
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- Nuxt.js 应用中的 prerender:routes 事件钩子详解
- 【问题解决】Tomcat由低于8版本升级到高版本使用Tomcat自带连接池报错无法找到表空间的问题
- 【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit
- 六、Spring Boot集成Spring Security之前后分离认证流程最佳方案
- 《JVM第7课》堆区
- .NET 8 高性能跨平台图像处理库 ImageSharp
- 还在为慢速数据传输苦恼?Linux 零拷贝技术来帮你!
- 刚毕业,去做边缘业务,还有救吗?
- 如何避免 HttpClient 丢失请求头:通过 HttpRequestMessage 解决并优化
- 让性能提升56%的Vue3.5响应式重构之“版本计数”