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 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Visual Studio 2010/2012 Pro Power Tools

Visual Studio 2010新增“扩展管理器”的功能,可用于添加、移除、启用和禁用Visual Studio扩展。我们可以从Visual Studio ...

1667
来自专栏IT派

Python | 查看微信撤回的消息(完整代码)

看到了一个基于python的微信开源库:itchat,玩了一天,做了一个程序,把私聊撤回的信息可以收集起来并发送到个人微信的文件传输助手,包括:

812
来自专栏学习力

《Java从入门到放弃》框架入门篇:Struts2的常用基本标签

1225
来自专栏互联网开发者交流社区

asp企业网站源码部分

1343
来自专栏cmazxiaoma的架构师之路

FastDFS蛋疼的集群和负载均衡(十八)之LVS+Keepalived双主模式

1516
来自专栏cs

kali入侵windows

因为我是一个爱好和平的人(捂嘴笑),所以就在虚拟机中,创建二个系统,一个kali,一个windows xp,来进行这次入侵实验,以此迈入hacke的大门。 -...

29210
来自专栏北京马哥教育

Linux磁盘及文件系统管理

磁盘(Hard Disk Drive,简称HDD)是一种存储介质,传统的机械硬盘由一个或多个铝制或玻璃制的碟片组成,碟片外覆盖有铁磁性材料。 磁盘的物...

2263
来自专栏Linux驱动

第3阶段——内核启动分析之创建si工程和分析stext启动内核函数(4)

目标: (1)创建Source Insight 工程,方便后面分析如何启动内核的 (2)分析uboot传递参数,链接脚本如何进入stext的  (3) 分析st...

1696
来自专栏Django Scrapy

端口的常用端口

端口号---具有网络功能的应用软件的标识号。注意,端口号是不固定的,即可以由用户手工可以分配(当然,一般在软件编写时就已经定义)。当然,有很多应用软件有公认的默...

3095
来自专栏惨绿少年

企业防火墙之iptables

1.1 企业中安全优化配置原则 尽可能不给服务器配置外网ip ,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网ip,可以开启防火墙服务. 大并发的...

4876

扫描关注云+社区