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

时间: 2024-12-20 05:08:33

C#实现局域网内远程开机的相关文章

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

转自原文 创建局域网内远程git仓库,并将本地仓库push推到远程仓库中 1. 先远程登录局域网内服务器 2. 在服务器里 切换到某个文件夹下, 然后新建一个文件夹用作git仓库(文件夹名最好跟准备推到服务器的仓库文件夹名相同), 并切换到此文件夹下, 接着将用git init 命令在此文件夹下建立一个git 仓库(图中的—bare参数为建立一个裸仓库), 然后退出服务器. 3. 退出服务器后,在本地路径切换到本地仓库的根目录中, 若本地没建立仓库,则先用git init 命令建立本地仓库,如图

局域网内远程失败检查的5个步骤,虽说简单,但很多新手还是不知道的,望能给别人提供帮助

前言:一般的新手都懂得前面三种,我之前就遇到在学校局域网内遇到这个问题,折腾了半天,在网上找过这很多方法,都得不到解决,还好有个舍友之前在学校当过网管,受过培训,对这方面还有比较专业,经过他的指导,我才弄好自己的局域网内远程,当时的问题就是下面第四个犯的错误,账户名和全名不一样,这个错误在网上基本都找不到解决方法,因为或许别人觉得简单就没有去总结,不过对于新手的而言,这个还真的是个问题,或许我这边文章在博客园里面,很多人都觉得没什么水平,不过每个新手都是从每天逛博客园开始,如果你们觉得有帮助的话

使用shutdown命令实现局域网内远程关机、重启整蛊他人

用法: shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/f]    [/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]] 没有参数   显示帮助.这与键入 /? 是一样的.    /?         显示帮助.这与不键入任何选项是一样的.    /i         显示图形用户界面(GUI).             

局域网内远程连接OPC配置方法详解

https://wenku.baidu.com/view/20fb8ea6d1d233d4b14e852458fb770bf78a3bcc.html OPC服务器是如何被找到的? https://blog.csdn.net/kkus123/article/details/80296468 原文地址:https://www.cnblogs.com/zouhao/p/10025406.html

局域网内任何一台pc上windows下eclipse远程连接hbase数据库

通过很长一段时间的反复失败,终于在windows下实现远程连接hbase数据库,在不断的尝试过程中深感一个详细的文档的重要性,于是就把我配置的详细过程记录下来.文中如果有些地方用词不当,或者理解错误,欢迎您们评论. 一.运行平台 hbase服务器端:Ubuntu 14.04 64位:HBASE1.1.3:JAVA 1.8: hbase客服端:windows32/64位:JAVA1.8:eclipse 4.5: 二.linux服务器端环境配置 1.  安装java 1.8软件 1)下载java软件

C#实现远程开机(局域网测试通过)

首先介绍相关知识. UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务. 下面是UDP与TCP的一些区别: **A)**UDP是无连接的.相比于TCP协议,UDP协议在传送数据前不需要建立连接,当然也就没有释放连接. **B)**UDP是尽最大努力交付的.也就是说UDP协议无法保证数据能够准确的

远程开机

远程开机方法 日期:2015-08-20     作者:lujl   随着网络科技的发展,远程开机也成为了一种主流.远程开机也是远程办公的基础,因为只有远程打开电脑,才能进行远程办公.那么,哪种远程开机方法是最实用的呢?下面,小编给您解答.提到远程开机方法,就不得不说下网络人远程开机卡了,网络人远程开机卡可以轻松实现对同一局域网下的计算机设备的远程开机操作.它集成了网络人强大的主机管理体系,实现单个设备即可管理所有网络人远程账户下的远程局域网主机,可以让网络人用户不管身在何处,都能安全地远程开启

极路由电脑远程开机

这算是一个老问题了,互联网上的方法一堆!前些天自己也折腾了下,主意是要取家里面的电脑,一天到晚天着耗电,关机了,要是想取东西取不出来!所以自然需要远程开机了,网上有好多说远程开机软件之类的,有些要收费有些不收费,但是实现不了!下面看看我的做法! 工具/原料 极路由一台 支持wake on lan的网卡一块(主要网卡支持即可) 方法/步骤 1 1.准备支持wake on lan网卡,大多数电脑主板自带的集成网卡都是支持的!大家先到BIOS里面去看下!有没这个选择项,如果有则说明支持该功能! 2 2

如何实现LAN或WAN远程开机?

一.实现远程开机的原理 远程唤醒Wake onLAN(WOL),又叫远程开机.现在很多网卡都支持的功能.而远程唤醒的实现,主要是向目标主机发送特殊格式的数据包.其实就是通过socket向目标的机器发送MagicPacket(魔术包),魔术包的格式,包含有连续6个字节的"FF"和连续重复16次的MAC地址. 你可以在任何协议的数据包(如在TCP/IP.IPX包)中填上 "FFFFFFFFFFFF"+连续重复16次的MAC地址,就可利用该协议作出一个使用该协议的Magi