C#远程开机
什么是网络唤醒
网络唤醒实现了对网络的集中管理,即在任何时刻,网管中心的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#远程开机的更多相关文章
- C#实现局域网内远程开机
1.远程开机原理 远程开机Wake on LAN(WOL),俗称远程唤醒,远程唤醒的实现主要是向目标主机发送特殊格式的数据包,是AMD公司制作的MagicPacket这套软件以生成网络唤醒所需要的特殊 ...
- Python 远程开机
用 Python 关机你肯定听过或者实践过,那么用 Python 开机呢?这是一个神奇的方法,教你如何用 Python 来开机. 本文目标 远程开机原理 Python 远程开机代码实现 Python ...
- java代码实现网络远程开机
http://my.oschina.net/kingfire/blog/156764 概述 远程开机(Wake onLAN)是指通过网络实现对服务器或者pc启动运行,现在很多网卡都支持的这个功能. 其 ...
- C#实现远程开机(局域网测试通过)
首先介绍相关知识. UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联 ...
- java实现远程开机
import java.io.IOException; import java.net.*;public class 远程开机 { public static void main(String[] a ...
- linux远程开机
它需要wakeonlan这个软件, 从何处得到它? 它的官方站是:http://sourceforge.net/projects/wake-on-lan/ 如果使用rpm包可以 ...
- linux 通过wol远程开机【转】
转自:http://yangbajing.blog.chinaunix.net/uid-10480699-id-5179860.html 今天发现个可以对linux服务器进行远程开机的软件-wakeo ...
- FRP+WoL实现远程开机+远程桌面
FRP+WoL实现远程开机+远程桌面 故事背景 这是一个很复杂而且很久远的故事,如果要讲的话,这个故事可以追溯到1981年(「都是废话,没有干货,如果不感兴趣请从第二章开始」),简单来说: 1981年 ...
- ubuntu 远程开机
启动者(电脑A) -----------> 被远程开启的电脑(电脑B) 一.被远程开启的电脑(电脑B):1. 重新开机,并进到BIOS设定2. 把Wake On Land / Wake On ...
- Ubuntu远程开机 (Wake on Lan)
启动者(A) 被远程开启者(B) 一.被远程开启的电脑(电脑B):1. 重新开机,并进到BIOS设定2. 把Wake On Land / Wake On PCI(E)设为Enable3. 储存并进入U ...
随机推荐
- office 2013 activiate---(run as admin)
win7 office 2013 activiate---(run as admin) empty the garbage in osx rm -rf ~/.Trash
- Java 集合框架之 JDK 1.5 新特性
forEach 循环 多用于元素迭代. 适用范围: - 数组 - 实现 Iterable 接口的集合类 格式: for(类型 变量 : Collection 集合 | 数组) { } 传统 for 和 ...
- DB2中编目本机其中数据库的方法
问题:同一节点上有两个实例.假设想在当中一个实例下訪问还有一个实例中的数据库,有两种方法: 1. 使用catalog local node的方式,在当中一个实例中将另外一个实例直接编目,这样的方试中, ...
- 你真的会用Gson吗?Gson使用指南
你真的会用Gson吗?Gson使用指南(一) 你真的会用Gson吗?Gson使用指南(二) 你真的会用Gson吗?Gson使用指南(三) 你真的会用Gson吗?Gson使用指南(四)
- 【Spring MVC】spring mvc中相同的url请求返回不同的结果
在项目中凡是使用Spring MVC这种控制器的,大多都是返回JSON数据对象,或者JSP页面. 但是相同的URL请求如何让他自动的选择放回的是什么? 在这里有由于鄙人没有亲自测试过,就不敢乱贴代码, ...
- pgadmin3
一般性 \copyright 显示PostgreSQL的使用和发行许可条款 \g [文件] or; 执行查询 (并把结果写入文件或 |管道) \gset [PREF ...
- Python框架之Tornado (源码之褪去模板外衣)
上一篇介绍了客户端请求在tornado框架中的生命周期,其本质就是利用epoll和socket来获取并处理请求.在上一篇的内容中,我们只是给客户端返回了简单的字符串,如:“Hello World”,而 ...
- JAVA接口中不可以有静态方法吗
1. 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错),所以不能含有静态代码块以及静态方法(用 ...
- jquery扩展鼠标mousewheel事件
最近项目中要有个鼠标在图片上滚动实现图片放大和缩小的得到功能,隐约的记得好像记得有个 mousewheel 事件,可以实现需求,于是乎,开始在网上查找这一方法,但是,出乎意料的结果,各浏览器对此方法有 ...
- docker 中安装PHP扩展
可以通过两种方式实现 1.pecl pdo_msql 方式二: docker-php-ext-install pdo pdo_mysql 如果报 /usr/local/bin/docker-php-e ...