首先要了解网络唤醒功能的原理如下:
Wake-on-LAN简称WOL或WoL,中文多译为“网上唤醒”、“远程唤醒”技术。WOL是一种技术,同时也是该技术的规范标准,它的功效在于让已经进入休眠状态或关机状态的计算机,透过局域网(多半为以太网)的另一端对其发令,使其从休眠状态唤醒、恢复成运作状态,或从关机状态转成引导状态。此外,与WOL相关的技术也包括远程下令关机、远程下令重启等相关的遥控机制。
实现唤醒的原理是广播一段魔法数据包,
魔法数据包(Magic Packet)是一个广播性的帧(frame),透过端口7或端口9进行发送,且可以用无连接(Connectionless protocol)的通信协议(如UDP、IPX)来传递,不过一般而言多是用UDP,原因是Novell公司的Netware网上操作系统的IPX协议已经愈来愈少机会被使用。
在魔法数据包内,每次都会先有连续6个"FF"(十六进制,换算成二进制即:11111111)的数据,即:FF FF FF FF FF FF,在连续6个"FF"后则开始带出MAC地址信息,有时还会带出4字节或6字节的密码,一旦经由网卡侦测、解读、研判(广播)魔法数据包的内容,内容中的MAC地址、密码若与计算机自身的地址、密码吻合,就会启动唤醒、引导的程序。 [1]
C#实现这类功能可以通过Udpclient,自己组合「魔法包」,然后广播出去就可以了。这网络包发送成功,目标mac地址的网卡就会收到并唤醒电脑开机。
核心功能就样实现,其他的就是处理mac地址列表和定时功能了,这个简单。
private void chkAutoWakeUp_CheckedChanged(object sender, EventArgs e) { tmrAutoWakeUp.Enabled = ((CheckBox)sender).Checked; } private void button1_Click_1(object sender, EventArgs e) { DoWakeUpAll(); } private void DoWakeUpAll() { foreach (String item in tbMacs.Lines) { WakeUp(item); } } private void tmrAutoWakeUp_Tick(object sender, EventArgs e) { if (DateTime.Now.ToLongTimeString().ToString() == "02:00:00") { DoWakeUpAll(); } } private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { Process.Start(new ProcessStartInfo("https://www.txwb.com") { UseShellExecute = true }); }
C#网络唤醒电脑工具下载,支持网吧、电竞酒店批量唤醒和定时唤醒,附带源码