什么是网络唤醒
网络唤醒实现了对网络的集中管理,即在任何时刻,网管中心的IT管理人员可以经由网络远程唤醒一台处于休眠或关机状态的计算机。使用这一功能,IT管理人员可以在下班后,网络流量最小以及企业的正常运作最不受影响的时候完成所有操作系统及应用软件的升级及其他管理任务。

为了唤醒网络上的计算机,用户必须发出一种数据包,该数据包的格式与普通数据包不同,而且还必须使用相应的专用软件才能产生。当前比较普遍采用的是AMD公司制作的Magic
Packet,这套软件可以生成网络唤醒所需要的特殊数据包。该数据包包含有连续6个字节的“FF”和连续重复16次的MAC地址。Magic Packet
虽然只是AMD公司开发推广的一项技术,并非业界公认的标准,但是仍受到很多网卡制造商的支持,因此许多具有网络唤醒功能的网卡都能与之兼容。

今天说的就是如何用C#程序来远程唤醒局域网中的计算机,

要使用网络唤醒,你必须拥有:

1:可向网卡发送网络“唤醒帧”的软件。
2:可解码“唤醒帧”的网卡,该网卡同时还必须可以从辅助电源中获取能量,并能够向主板发送“唤醒信号”。

先说被唤醒机器如何设置
必须将被唤醒计算机BIOS中“Wake On LAN”或者“Resume by LAN”选项必须设置为“Enable”。
必须获取到被唤醒计算机网卡MAC

C#代码如下

    private IPEndPoint point;
private UdpClient client = new UdpClient(); /***唤醒远程机器方法
* @param
* mac 要唤醒的机器的MAC
*IP
* port udp消息发送端口
*摘要:唤醒方法为网卡提供的魔术封包功能,即以广播模式发送6个FF加上16遍目标MAC地址的字节数组
**/
private void wakeUp(string mac,int port)
{
byte[] magicBytes =StrUtility.getMagicPacket(mac);
point = new IPEndPoint(IPAddress.Parse("255.255.255.255"),port);//广播模式:255.255.255.255 try
{ client.Send(magicBytes, magicBytes.Length,point);
}
catch (SocketException) { } }
StrUtility.getMagicPacket代码如下 ///<summary>
///字符串转16进制字节数组
///</summary>
/// <param name="hexString"></param>
///<returns></returns>
public static byte[] strToHexByte(string hexString)
{
hexString =hexString.Replace(" ","");
if((hexString.Length % ) !=)
hexString += "";
byte[] returnBytes = new byte[hexString.Length /];
for (int i =; i < returnBytes.Length;i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * , ),);
return returnBytes; } ///<summary>
///拼装MAC魔术封包
///</summary>
/// <param name="hexString"></param>
///<returns></returns>
public static byte[] getMagicPacket(string macString)
{
byte[] returnBytes = new byte[];
string commandString ="FFFFFFFFFFFF"; for (int i = ; i < ;i++)
returnBytes[i] = Convert.ToByte(commandString.Substring(i * , ),);
byte[] macBytes =strToHexByte(macString);
for (int i = ; i < ;i++)
{
returnBytes[i] = macBytes[i %];
}
return returnBytes;
}

C#远程开机的更多相关文章

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

    1.远程开机原理 远程开机Wake on LAN(WOL),俗称远程唤醒,远程唤醒的实现主要是向目标主机发送特殊格式的数据包,是AMD公司制作的MagicPacket这套软件以生成网络唤醒所需要的特殊 ...

  2. Python 远程开机

    用 Python 关机你肯定听过或者实践过,那么用 Python 开机呢?这是一个神奇的方法,教你如何用 Python 来开机. 本文目标 远程开机原理 Python 远程开机代码实现 Python ...

  3. java代码实现网络远程开机

    http://my.oschina.net/kingfire/blog/156764 概述 远程开机(Wake onLAN)是指通过网络实现对服务器或者pc启动运行,现在很多网卡都支持的这个功能. 其 ...

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

    首先介绍相关知识. UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联 ...

  5. java实现远程开机

    import java.io.IOException; import java.net.*;public class 远程开机 { public static void main(String[] a ...

  6. linux远程开机

    它需要wakeonlan这个软件,     从何处得到它?     它的官方站是:http://sourceforge.net/projects/wake-on-lan/     如果使用rpm包可以 ...

  7. linux 通过wol远程开机【转】

    转自:http://yangbajing.blog.chinaunix.net/uid-10480699-id-5179860.html 今天发现个可以对linux服务器进行远程开机的软件-wakeo ...

  8. FRP+WoL实现远程开机+远程桌面

    FRP+WoL实现远程开机+远程桌面 故事背景 这是一个很复杂而且很久远的故事,如果要讲的话,这个故事可以追溯到1981年(「都是废话,没有干货,如果不感兴趣请从第二章开始」),简单来说: 1981年 ...

  9. ubuntu 远程开机

    启动者(电脑A)  ----------->  被远程开启的电脑(电脑B) 一.被远程开启的电脑(电脑B):1. 重新开机,并进到BIOS设定2. 把Wake On Land / Wake On ...

  10. Ubuntu远程开机 (Wake on Lan)

    启动者(A) 被远程开启者(B) 一.被远程开启的电脑(电脑B):1. 重新开机,并进到BIOS设定2. 把Wake On Land / Wake On PCI(E)设为Enable3. 储存并进入U ...

随机推荐

  1. delphi inifile 支持 utf8

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  2. shader练习-vertphone

    Shader "VertPhone" { Properties { _MainTex( "颜色贴图", 2D ) = "white"{} _ ...

  3. 【转】如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源

    网上看到关于微信官方的跨平台跨业务的终端基础组件Mars的介绍文章,转载这这里.源代码: https://github.com/Tencent/mars作者:男人链接:https://zhuanlan ...

  4. Lua(1)

    1.the use of functions in table fields is a key ingredient for some advanced uses of Lua, such as mo ...

  5. mysql-5.6.22的安装步骤

    一.环境与下载地址: 1.系统下载地址: http://mirrors.sohu.com/centos/6.6/isos/x86_64/CentOS-6.6-x86_64-bin-DVD1.iso 2 ...

  6. JAVA 读取txt文件内容

    原文地址https://www.cnblogs.com/xing901022/p/3933417.html 通常,我们可以直接通过文件流来读取txt文件的内容,但有时可能会出现乱码!此时只要设置一下文 ...

  7. UTC和时间相互转换

    // ToLocalTime() UTC时间转换为本地时间 public static DateTime UtcToDateTime(long number) { , , , , , , ).AddS ...

  8. ZooKeeper的使用:安装、常用的命令

    公司项目需要使用dubbo,因此,自己做个小Demo就很有必要了,也有助于自己理解和使用,前期准备工作当然就必不可少了,因为dubbo是发布到zookeeper的服务,故先把zookeeper的环境先 ...

  9. Kattis - glitchbot 【DFS】

    Kattis - glitchbot [DFS] 题意 有一个机器人 刚开始在(0, 0),然后给出一个目标点,并且会给出一系列指令,但是其中会有一个指令是错误的.我们需要找出那个指令,并且改成正确的 ...

  10. linux 安装 maven

    一.下载 1.创建下载软件包目录  mkdir /home/install 2.在/home/install下载maven包,或者将下载好的maven压缩包上传至/home/install wget  ...