远程唤醒相关技术解决方法

来源:互联网 发布:天猫淘宝网夏季女装 编辑:程序博客网 时间:2024/04/28 22:20
实际上,此Magic Packet是AMD公司开发的,请在google.cn中搜索Magic Packet Technology。原理上我们不用深入,实现上是发一个BroadCast包,包的内容包括以下数据就可以了。FF FF FF FF FF FF,6个FF是数据的开始,紧跟着16次MAC地址就可以了。比如MAC地址是11 22 33 44 55 66,那么数据就是FF FF FF FF FF FF 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66........(11 22 33 44 55 66重复16次)。这个数据在包的任何位置都可以,或者包仅为这个数据。然后网播出去就可以了。简单的实现如下:

private static void WakeUp(byte[] mac) {
              UdpClient client = new UdpClient();
             client.Connect(IPAddress.Broadcast, 30000);
             
              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);
         }

PS:跨路由器的问题(不是公网IP问题)。如果机器A和机器B处于同一个网段内,用client.Connect(IPAddress.Broadcast,port)是可以的,如果A和B不是处于同一个网段内,那么就要用网段内的广播地址,比如A机器是192.168.1.2,B机器IP地址是192.168.100.3,用A远程唤醒B,就要用B网段的广播地址,192.168.100.255。
IPAddress ip = new IPAddress(new byte[]{192,168,100,255});
client.Connect(ip,port)。原理可以参考网络协议。
其它详细信息,请看AMD的白皮书Magic Packet Technology
http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/20213.pdf


通过局域网实现远程唤醒功能
远程唤醒技术(WOL,Wake-on-LAN),可以通过局域网实现远程开机,无论被访问的计算机离我们有多远、处于什么位置,只要处于同一局域网内,就都能够被随时启动。

远程唤醒的硬件需求

可被远程唤醒的计算机对硬件有一定的要求,主要表现在网卡、主板和电源上。

1.网卡

能否实现远程唤醒,其中最主要的一个部件就是支持WOL的网卡。我公司的TF-3239是支持WOL的。远端被唤醒计算机的网卡必须支持WOL,而用于唤醒其他计算机的网卡则不必支持WOL。另外,当一台计算机中安装有多块网卡时,只将其中的一块设置为可远程唤醒。

2.主板

主板也必需支持远程唤醒,可通过查看CMOS的“Power Management Setup”菜单中是否拥有“Wake on LAN”项而确认。另外,支持远程唤醒的主板上通常都拥有一个专门的3芯插座,以给网卡供电(PCI2.1标准)。 由于现在的主板通常支持PCI 2.2标准,可以直接通过PCI插槽向网卡提供+3.3V Standby电源,即使不连接WOL电源线也一样能够实现远程唤醒,因此,可能不再提供3芯插座。主板是否支持PCI2.2标准,可通过查看CMOS的 “Power Management Setup”菜单中是否拥有“Wake on PCI Card”项来确认。

3.电源

若欲实现远程唤醒,计算机安装的必须是符合ATX 2.01标准的ATX电源,+5V Standby电流至少应在600mA以上。

远程唤醒实现前的准备

计算机拥有远程唤醒功能并不等于能够实现远程唤醒,在实现之前,还必须对硬件作必要的连接和设置。

1.CMOS和网卡设置

引导计算机,进入CMOS参数设置。选择电源管理设置“Power Management Setup”菜单,将“Wake up on LAN”项和“Wake on PCI Card”项均设置为“Enable”,启用该计算机的远程唤醒功能。另外还需将TF-3239网卡上的“Wake-on-LAN”功能设置为 “Enable”。

2.硬件连接

将TF-3239网卡安装在计算机的PCI插槽中,然后将WOL电缆的两端分别插入网卡和主板的3芯插座中,将网卡与计算机主板连接起来。如果计算机主板支持PCI 2.2标准,那么,只需开启“Wake on PCI Card”功能就可以了,无须使用WOL电缆连接。启动计算机,安装网卡驱动程序并进行必要的网络设置、指定IP地址参数。

3.设置用户自动登录

在唤醒远程计算机时,必须能够自动登录,方法如下:如果远程计算机配置为多个用户使用(若为单用户则直接执行下一步),在“控制面板”中双击“用户 ”图标,在对话框中删除所有的用户。重新启动计算机,当显示登录对话框时,不输入密码直接单击“确定”。打开“控制面板”中的“网络”选项,将“主网络登录”选“Microsoft友好登录”或“Windows登录”。选择“Microsoft网络用户”,并单击“属性”按钮,在弹出的对话框中取消“登录到Windows NT域”复选框的选择。打开“控制面板”中的“密码”项,在出现的“密码属性”对话框中选择“用户配置文件”标签,选中第一项“此计算机上所有的用户使用相同的首选项和桌面配置”,单击“确定”,重新启动计算机。经过以上几步的设置,远程计算机在启动时就不会出现登录界面了。

4.测试网卡的MAC地址

通过在计算机上运行winipcfg.exe(WIN95)或ipconfig.exe(WIN98),即可测知网卡的MAC地址。

Winipcfg

依次单击“开始/运行”,键入“winipcfg”并回车,弹出“IP配置”窗口。在下拉列表中选择“PCI Fast Ethernet Adapter”,此时显示在“适配器地址”栏中的文字即为该网卡的MAC地址。

Ipconfig

在DOS提示符下,运行加“all”参数的ipconfig命令,也可显示网卡的MAC地址。命令格式如下:ipconfig /all

远程唤醒的实现

远程唤醒需要借助相应的软件才能实现。TF-3239需要使用AMD公司的Magic Packet来作为远程唤醒数据包。远程唤醒某台计算机时,运行“Magic_pkt.exe”程序,出现主窗口。选择“Run Power Management Test”,然后在弹出的对话框中选择“Master Machine”,继续在对话框中选择“Magic Packet”或“Wakeup Frame”,软件提示“Input Ethernet Address to Match Node ID of Target Machine”(目标计算机网卡MAC地址)中输入欲唤醒计算机网卡的MAC地址,回车发送。远程计算机自动启动,稍候片刻后即可对其进行操作。

故障的排除

1.启用网卡远程唤醒功能后计算机不能正常启动的解决方法 ? 从计算机主板上移去3针远程唤醒线; ? 重新启动计算机,运行配置程序设置网卡; ? 关闭计算机,重新连接3针远程唤醒线; ? 重新启动计算机。 2.当发送远程唤醒信号后计算机不能被唤醒的解决方法 ? 查看计算机和网卡是否均满足远程唤醒的基本要求; ? 检查计算机上有关远程唤醒的CMOS设置是否正确; ? 移去计算机机箱盖,检查3针远程唤醒连接是否正确可靠; ? 运行配置程序,检查网卡的参数设置是否恰当; ? 插上一块已知肯定没有问题的WOL网卡和3针远程唤醒线缆,重新对计算机进行检查。