C#网络唤醒
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#网络唤醒,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2325字,纯文字阅读大概需要4分钟。
内容图文
什么是网络唤醒
网络唤醒实现了对网络的集中管理,即在任何时刻,网管中心的IT管理人员可以经由网络远程唤醒一台处于休眠或关机状态的计算机。使用这一功能,IT管理人员可以在下班后,网络流量最小以及企业的正常运作最不受影响的时候完成所有操作系统及应用软件的升级及其他管理任务。
为了唤醒网络上的计算机,用户必须发出一种数据包,该数据包的格式与普通数据包不同,而且还必须使用相应的专用软件才能产生。当前比较普遍采用的是AMD公司制作的Magic Packet,这套软件可以生成网络唤醒所需要的特殊数据包。该数据包包含有连续6个字节的“FF”和连续重复16次的MAC地址。Magic Packet 虽然只是AMD公司开发推广的一项技术,并非业界公认的标准,但是仍受到很多网卡制造商的支持,因此许多具有网络唤醒功能的网卡都能与之兼容。
要使用网络唤醒,你必须拥有:
1:可向网卡发送网络“唤醒帧”的软件。
2:可解码“唤醒帧”的网卡,该网卡同时还必须可以从辅助电源中获取能量,并能够向主板发送“唤醒信号”。 (基本上都支持)
先说被唤醒机器如何设置
1.Win7系统下设置如下图,计算机-》设备管理器-》网卡驱动属性
2.ipconfig –all 命令查看本机网卡的MAC地址
发送的网络数据包显示如下图,其中mac地址是随便填写的重复的09。
C#代码如下:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
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,
string
ip)
{
byte
[] magicBytes = getMagicPacket(mac);
point =
new
IPEndPoint(IPAddress.Parse(ip), port);
//广播模式:255.255.255.255
try
{
client.Send(magicBytes, magicBytes.Length, point);
}
catch
(SocketException e) { MessageBox.Show(e.Message); }
}
/// <summary>
/// 字符串转16进制字节数组
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
public
static
byte
[] strToHexByte(
string
hexString)
{
hexString = hexString.Replace(
" "
,
""
);
if
((hexString.Length % 2) != 0)
hexString +=
" "
;
byte
[] returnBytes =
new
byte
[hexString.Length / 2];
for
(
int
i = 0; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
return
returnBytes;
}
/// <summary>
/// 拼装MAC魔术封包
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
public
static
byte
[] getMagicPacket(
string
macString)
{
byte
[] returnBytes =
new
byte
[102];
string
commandString =
"FFFFFFFFFFFF"
;
for
(
int
i = 0; i < 6; i++)
returnBytes[i] = Convert.ToByte(commandString.Substring(i * 2, 2), 16);
byte
[] macBytes = strToHexByte(macString);
for
(
int
i = 6; i < 102; i++)
{
returnBytes[i] = macBytes[i % 6];
}
return
returnBytes;
}
|
当然这只是在局域网中实现的,如果要在广域网中实现的话还需要路由器映射等什么的,本文不做讨论。
原文:http://www.cnblogs.com/zxlovenet/p/3527222.html
内容总结
以上是互联网集市为您收集整理的C#网络唤醒全部内容,希望文章能够帮你解决C#网络唤醒所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。