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

转载于:https://www.cnblogs.com/DHUtoBUAA/p/5440441.html

C#实现局域网内远程开机相关推荐

  1. 同一个网段win10远程linux,Win10专业版系统在局域网内远程另外一台电脑教程

    今天给大家介绍的是Win10专业版系统在局域网内远程另外一台电脑教程.在此之前首先我们要知道什么是局域网,局域网是在一个局部的地理范围内(如一个学校.工厂和机关内),覆盖范围一般是方圆几千米之内,可以 ...

  2. 创建局域网内远程git仓库,并将本地仓库push推到远程仓库中

    转自原文 创建局域网内远程git仓库,并将本地仓库push推到远程仓库中 1. 先远程登录局域网内服务器 2. 在服务器里 切换到某个文件夹下, 然后新建一个文件夹用作git仓库(文件夹名最好跟准备推 ...

  3. 局域网内远程控制开机工具NetWaker

    局域网内远程控制开机工具NetWaker 此处是软件下载地址: NetWaker2.1 测试 Win10: #在华硕主板上进行测试 1.BIOS设置 进入BIOS-选择高级模式(按F7)-高级设置-电 ...

  4. 用shutdown命令实现局域网内远程重启或关闭电脑

    用shutdown命令实现局域网内远程重启或关闭电脑 https://jingyan.baidu.com/article/851fbc377838f53e1f15ab05.html 方法/步骤 1 开 ...

  5. vs局域网内远程调试

    vs局域网内远程调试 前提:在同一局域网内(以网线连接两台电脑最好) 软件应用端: 代码调试端: 前提:在同一局域网内(以网线连接两台电脑最好) 软件应用端: vs安装目录下找到并打开msvsmon. ...

  6. 【Windows】局域网内远程桌面控制

    [Windows]局域网内远程桌面控制 1.背景 2.设置登录密码 3.启用远程桌面 4.远程示例 1.背景 工作中的很多场景需要远程操作,这时候可以借助远程桌面应用程序实现, 比如AnyDesk.向 ...

  7. 2021-08-03 在ubuntu 18.04上创建基于VNC的局域网内远程工作环境

    目录标题 1. 场景描述 2. 环境搭建概要 2.1 工作站 2.2 客户端 2.3 远程登陆 3. 问题说明 3.1 单用户支持 3.2 客户端显示不全 3.3 VNC vs. Teamviewer ...

  8. Win7局域网内远程桌面连接

    在同一LAN内,有A,B,C,D四台电脑,要设置远程连接,现在以从A电脑远程连接到B电脑为例,进行讲解 一.A电脑设置: 右击"我的电脑"--"属性"--&qu ...

  9. 如何使用TeamViewer在局域网内远程连接另一台电脑

    TeamViewer一般都用来远程连接两台电脑,但是最近工作的时候,就要使用teamview进行局域网远程控制. 具体操作如下 1.首先需要配置两台电脑在同一个网段(见https://blog.csd ...

最新文章

  1. 一只端午节鸭蛋粽子的背后:AI 与农业
  2. 如何控制参照PR作PO时,PO的数量不能超过PR的数量
  3. 给年终总结报告加分的技巧:手机上就能看的可视化长什么样?
  4. 【转】处事22计、心态24条、伤心50句、礼仪73、学会长大20!
  5. 第十三周项目1-数组大折腾(一)
  6. [codewars] - int32 to IPv4 二进制十进制 ip地址转换
  7. electron入门笔记(三)- 引入bootstrap
  8. iOS AVPlayer 使用总结
  9. 灰度发布、蓝绿发布、滚动发布
  10. 论文解读-CenterNet:Keypoint Triplets for Object Detection
  11. Unity3D场景性能优化/渲染/卡顿/搭建优化 遮挡剔除/层消距离技术/LOD(多层次细节)
  12. 银行账号和身份证号的数据有效性设置
  13. cmwap与cmnet的区别
  14. No (visible) service implements the interface org.qiwen.serv
  15. 黑苹果安装EP-DB1608无线网卡驱动
  16. 各种json工具包的比较:
  17. 图解企业6S管理体系及如何推行6S管理?
  18. (高通平台)pdaf log打印不出来的检查步骤
  19. 聊一聊关于微前端架构的几种技术选型(转载,侵权必删)
  20. fatal error C1004: 发现意外的文件尾 这个错误怎么解决?

热门文章

  1. 遇见那个对的人,便是爱情
  2. 如何从用户体验的角度去做一个网站的页面设计
  3. Opencv头文件记要~
  4. 用nice等命令设定的进程优先级有什么确切的含义?
  5. mysql 存储过程声明式游标_Mysql 存储过程中使用游标循环读取临时表
  6. linux用户层驱动--VFIO(五)
  7. leetcode算法题--最长湍流子数组
  8. leetcode算法题-- 最长递增子序列的个数★
  9. cocos2d-x 输出debug信息
  10. 新手理解的JS原型链