首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

.NET 网络唤醒

编程知识
2024年08月30日 17:29

本文介绍下电脑设备关机的情况下如何通过网络唤醒设备,之前电源S状态 计算机Power电源状态- 唐宋元明清2188 - 博客园 (cnblogs.com) 有介绍过远程唤醒设备,后面这俩天了解多了点所以单独加个随笔

设备关机的情况下,使用网络唤醒的前提条件:

1. 被唤醒设备需要支持这WakeOnLine

首先是有线网口要支持,比如我司大屏有俩个Lan口但只有Lan1支持远程唤醒。然后主板需要支持网络唤醒,要确认可以通过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),我验证了是不起作用的。

上方Demo代码见仓库 kybs00/WakeOnLanDemo (github.com) 

 

 关键字:电源状态、远程唤醒、发包工具MAGPAC.exe

From:https://www.cnblogs.com/kybs0/p/18389269
本文地址: http://shuzixingkong.net/article/1594
0评论
提交 加载更多评论
其他文章 sipp模拟uas发送update
概述 freeswitch是一款简单好用的VOIP开源软交换平台。 但是fs在处理update消息时候有BUG,为了复现问题,使用sipp模拟uas,发送update并发送DTMF码。 本文档记录sipp的配置方案。 环境 CentOS 7.9 freeswitch 1.10.7 sipp.3.6.
sipp模拟uas发送update sipp模拟uas发送update
containerd:配置https私有镜像仓库的最新方法
随着containerd应用越来越广泛,我们必须紧跟官网的节奏。 之前配置https私有镜像仓库的方法比较繁琐,并且不易梳理,下边介绍一下目前最新的配置方法。 配置https私有镜像仓库 我假设你现在已经有私有仓库并且是https 再假设你的harbor域名是harbor.example.cn 你只
倾斜摄影osgb格式文件,进行坐标转换
倾斜摄影OSGB格式的文件,很棘手,今天需要把osgb放到UE中渲染。碰到的问题如下: 1、osgb文件导进去后,Z轴不想上,是歪的,小人放进去后,就斜站在马路上。 2、根本原因是坐标系,UE的插件cesium for UE支持WGS84坐标(wkid:4326)。 怎么解决问题呢? 1、当然是问G
NET Core 多身份校验与策略模式
背景需求: 系统需要对接到XXX官方的API,但因此官方对接以及管理都十分严格。而本人部门的系统中包含诸多子系统,系统间为了稳定,程序间多数固定Token+特殊验证进行调用,且后期还要提供给其他兄弟部门系统共同调用。 原则上:每套系统都必须单独接入到官方,但官方的接入复杂,还要官方指定机构认证的证书
NET Core 多身份校验与策略模式 NET Core 多身份校验与策略模式 NET Core 多身份校验与策略模式
Windows10使用MSYS2和VS2019编译FFmpeg详解
本文详解介绍了在windows10下,使用VS2019社区版编译ffmpeg的环境搭建、编译过程,以及期间遇到的各种问题。
Windows10使用MSYS2和VS2019编译FFmpeg详解 Windows10使用MSYS2和VS2019编译FFmpeg详解 Windows10使用MSYS2和VS2019编译FFmpeg详解
[kubernetes]使用kubeadm和containerd部署kubernetes
在centos 7上使用kubeadm部署v1.25版本的k8s,容器运行时采用containerd
四,分析Spring Boot底层机制(Tomcat 启动分析+Spring容器初始化+Tomcat如何关联 Spring 容器) 以及个人编写启动 Tomcat
四,分析Spring Boot底层机制(Tomcat 启动分析+Spring容器初始化+Tomcat如何关联 Spring 容器) 以及个人编写启动 Tomcat @目录四,分析Spring Boot底层机制(Tomcat 启动分析+Spring容器初始化+Tomcat如何关联 Spring 容器)
四,分析Spring Boot底层机制(Tomcat 启动分析+Spring容器初始化+Tomcat如何关联 Spring 容器) 以及个人编写启动 Tomcat 四,分析Spring Boot底层机制(Tomcat 启动分析+Spring容器初始化+Tomcat如何关联 Spring 容器) 以及个人编写启动 Tomcat 四,分析Spring Boot底层机制(Tomcat 启动分析+Spring容器初始化+Tomcat如何关联 Spring 容器) 以及个人编写启动 Tomcat
使用 setenv 配置文件管理 Tomcat 的自定义环境变量
1、背景描述 有时候,我们会在 catalina.bat 或 catalina.sh 文件中,自定义一些环境变量,例如额外指定 JDK 路径或设置 JVM 参数。 实际上,直接在 catalina.bat 或 catalina.sh 文件中,自定义环境变量的做法,是不规范的。 因为在对 Tomcat
使用 setenv 配置文件管理 Tomcat 的自定义环境变量 使用 setenv 配置文件管理 Tomcat 的自定义环境变量 使用 setenv 配置文件管理 Tomcat 的自定义环境变量