C#实现局域网内远程开机

1、远程开机原理

     远程开机Wake on LAN(WOL),俗称远程唤醒,远程唤醒的实现主要是向目标主机发送特殊格式的数据包,是AMD公司制作的MagicPacket这套软件以生成网络唤醒所需要的特殊数据包,俗称魔术包(Magic Packet)。魔术包的格式,包含有连续6个字节的“FF”和连续重复16次的MAC地址,你可以在任何协议的数据包中填上 "FFFFFFFFFFFF"+连续重复16次的MAC地址,就可利用该协议作出一个使用该协议的MagicPacket。如果远程计算机最后一次关机的时候是属于非正常关机(突然断电或者关机时死机等),唤醒就有可能会失败。

2、软硬件配置

    主板和网卡必须都支持远程唤醒功能。现在的主板和网卡一般都支持远程唤醒功能,在网卡中WOL一般默认Disable,所以需要在BIOS模式选择电源管理设置“Power ”选项,将“Wake up on LAN”项或“Wake on PCI Card”项均设置为“Enable”,启用该计算机的远程唤醒功能,如图1所示。

                                                                                         图1 BIOS中WOL设置界面

3、编程实现

        /// <summary>         /// 远程开机,网卡需要具备远程唤醒功能         /// </summary>         /// <param name="mac">网卡物理地址字符数组</param>         public static void WakeUp(byte[] mac)         {             UdpClient client = new UdpClient();             client.Connect(IPAddress.Broadcast, 9090);

            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 j = 0; j < 6; j++)                     packet[i * 6 + j] = mac[j];

            int result = client.Send(packet, packet.Length);         }

        // 唤醒按钮事件代码

        private void button_Click(object sender, EventArgs e)         {             byte[] mac = new byte[6];

            //MAC地址分配到mac数组中             mac[0] = 0x00;             mac[1] = 0x01;             mac[2] = 0x80;             mac[3] = 0x79;             mac[4] = 0x08;             mac[5] = 0xD8;

            WakeUp(mac);         }

4、参考文献

    http://blog.csdn.net/config_man/article/details/6906566

    http://baike.baidu.com/view/1965454.htm

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐享123

Capture QinQ Large Packets

2229
来自专栏搜云库

Spring Boot 中使用 Java API 调用 Elasticsearch

ElasticSearch 是一个高可用开源全文检索和分析组件。提供存储服务,搜索服务,大数据准实时分析等。一般用于提供一些提供复杂搜索的应用。 Elastic...

1.1K10
来自专栏企鹅号快讯

Linux C语言高级编程之网络编程!

简介 本章主要讲解网络编程的基础知识,主要包括七层网络模型、常用通信协议、IP地址与子网掩码及端口号、字节序。 七层网络模型 讲到网络首先说一下最常见的网络模型...

1839
来自专栏deepcc

Cookie 基本操作

1123
来自专栏FD的专栏

WebApp for Desktop: 请不要滥用手型指针

这是一篇吐槽。最近想用Electron做点东西,大致浏览了几个UI库,又想起一些用Electron做的App的糟糕体验,实在是想吐槽一番。也不知道大家是不是也有...

943
来自专栏影子

PostgreSQL=>递归查询

3228
来自专栏用户画像

北理(2014年)813计算机专业基础

1.理解数据结构的基本概念;掌握数据的逻辑结构、存储结构及其差异,以及各种基本操作的实现。

711
来自专栏北京马哥教育

tomcat调优之启动参数

Linux系统中tomcat的启动参数 export JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k -XX:+...

30510
来自专栏涤生的博客

海量网络连接服务端JVM参数调优实战过程

以上三个特点导致有大量小对象聚集在old区,高峰期old区域增长非常快,对象在一段时间内必然消亡

1043
来自专栏大数据挖掘DT机器学习

并行爬虫和数据清洗工具(开源)

etlpy是python编写的网页数据抓取和清洗工具,核心文件etl.py不超过500行,具备如下特点 爬虫和清洗逻辑基于xml定义,不需手工编写 基于pyth...

3294

扫码关注云+社区