zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    学习九-python 异常处理
    验证基于逻辑回归的隐马尔可夫模型的心音信号切分算法(literature study)
    字典的内置方法比较
    学习六
    Ubuntu 16.04 LTS 搜狗输入法安装
    集合经验模态分解(EEMD)在语音中的应用举例
    SwfUpload及imgareaselect使用方法
    Uploadify插件使用方法
    Ueditor使用方法
    PartialView 加载Js
  • 原文地址:https://www.cnblogs.com/DHUtoBUAA/p/5440441.html
Copyright © 2011-2022 走看看