logo资料库

VB中编程实现远程唤醒(开机)方法.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
远程唤醒一点通 《计算机应用文摘》曾经在 2003 年第 7 期的《运筹帷幄,决胜千里——远程遥控》一 文中介绍了如何实现远程控制技术,可是远程控制首要条件是远程计算机必须处手开机状 态。但让远程计算机 24 小时开机等待客户机的连接是不现实的。那能不能在需要时远程控 制计算机开机呢?答案是肯定的。我们可以借助远程唤醒技术来实现这个功能。 远程唤醒技术主要有两种实现方式:Wake-up On LAN(局域网开机,简称 WOL)和 Wake-Up On Modem (调制解调器开机,简称 WOM)。下面笔者向大家介绍远程唤醒技术的 实现方法。 一、WOL 要实现局域网开机,主板和网卡必须都支持远程唤醒功能。一般目前的主板都支持这个 功能,支持的主板上通常都有一个专门的 3 芯插座,以便在关机时为网卡供电。但 并非所有的网卡都支持该功能(特别是一些价格较便宜的低档网卡),要判断网卡是否支持远 程唤醒功能的方法很简单,支持远程唤醒的网卡上都有一个 3 针的 WOL 接口和一条 3 芯的 远程唤醒电缆,通过判断网卡是否带有 WOL 接口即可(有些较新的网卡可能没有 WOL 接口 也能支持远程唤醒。这是因为现在流行的主板支持 PCI2.2 标准,而 PCI 2.2 标准不需要 通过专门的 WOL 接口为网卡供电,允许主板直接通过 PCI 插槽向网卡提供 Standby 电源)。 1.硬件连接 网卡安装完毕后将远程唤醒电缆的一端插入到网卡的 WOL 接口上,另外一端与主板的 3 针 WOL 远程唤醒接口相连(该接口旁通常标有 WOL_CON 的字样,当然如果主板和网卡 都支持 PCI2.2 标准则无须做这一步)。 2.CMOS 设置 打开 CMOS 远程唤醒功能很简单,只要将 CMOS 设置中的“Power Management Setup” 的“Wake Up On LAN”项设置为“Enable”即可。 3.远程唤醒计算机 远程计算机的网卡只有收到特殊的信号才会激活系统开机,所以我们还要借助相应的软 件产生这些数据帧。类似的软件很多,最有名的是 AMD 公司开发的 Magic Packet,此外还 有一些网卡自带的诊断程序也有该功能。笔者这里给大家推荐一款国人 开发的软件——“网络唤醒 ”。 网络唤醒是一个无须安装的绿色软件,首先解压缩下载的压缩包后,然后运行其中的“网 络唤醒 V041.exe”打开《网络唤醒》。该软件的界面如上图所示,由于只有知道远程计算 机的 MAC 地址才可以进行唤醒,所以首先要使软件知道远程计算机的 MAC 地址。单击“局 域网”菜单的“扫描网络”,《网络唤醒》会扫描局域网中所有正处于开机状态的计算机,并 将计算机名、IP 地址和 MAC 地址等信息显示在“列表信息”中(如果没有扫描到目标计算 机,可以单击“局域网”菜单的“手工增加”),完成后单击“列表”菜单的“保存列表”, 将扫描的结果保存起来以便下次使用。 若要唤醒网络中某台计算机,可以在“列表信息”中右击该计算机,选择“唤醒”。如 果要将列表中所有计算机都唤醒可以选择“唤醒全部”。
二、WOM WOL 只能在局域网中使用,如果远程唤醒计算机与本地距离较远,我们就必须通过 WOM 来实现远程唤醒(可以毫不夸张地说,凡是电话能通的地方都祖利用 WOM 来实现远 程唤醒)。 WOM 同样需要主板和 Modem 的双重支持(目前大多数主板和 Modem 都支持此功能)。 实现 WOM 比较简单,将 Modem 正确连接到计算机和电话线后,将 CMOS 中的“Power Management Setup”中的“Power On by Ring”项设置为“Enable”即可。现在只要 Modem 处于开启状态,拨打 Modem 所连接的电话号码就可以通过 WOM 实现远程开机了。而且使 用 WOM 进行远程唤醒不用担心电话费的问题,因为 Modem 只要侦测到电话震铃不需要接 听电话就可以启动机器(所以我们不用花一分钱就可以打国际长途去唤醒位于另一个国家中 的计算机了)。 VB 中编程实现远程唤醒方法: 1、 使用 WINSOCK1 的 UDP 协议来发送数据包; 2、 要使局域网中的电脑开机,就要知道远程计算机的 MAC 地址; 3、 数据发送格式为 Byte 型十六进制数据; 4、 要发送的数据为: FF FF FF FF FF FF 和十六个 6 位的 MAC; 5、 主板设置:将 CMOS 设置中的“Power Management Setup”的“Wake Up On LAN”项 设置为“Enable”即可; 6、 网卡与主板连接:主板上通常都有一个专门的 3 芯插座,以便在关机时为网卡供电,支 持远程唤醒的网卡上都有一个 3 针的 WOL 接口和一条 3 芯的远程唤醒电缆,通过判断 网卡是否带有 WOL 接口即可 7、 因为条件有限只在 INTER865 主板上测试通过; 8、 如有任何问题可联系 QQ:4654525 (KING2326) 。^-^ …………………… Private Sub InitUDPSOCK() With Winsock1 .Protocol = sckUDPProtocol .RemoteHost = "255.255.255.255" ‘或者使用局域网段如”192.168.XXX..255” .RemotePort = 7010 .Bind 7010 End With End Sub Private Sub UDPSenddata(MAC As String) Dim i As Integer Dim p As Integer Dim B() As Byte Dim DataBuff() As Byte
ReDim B(0 To 5) As Byte ReDim DataBuff(0 To 101) As Byte '这部分是举例的 MAC 码 00-11-11-1C-D9-50 B(0) = Val("&h" & (Mid(MAC, 1, 2))) '&H0 B(1) = Val("&h" & (Mid(MAC, 4, 2))) '&H11 B(2) = Val("&h" & (Mid(MAC, 7, 2))) '&H11 B(3) = Val("&h" & (Mid(MAC, 10, 2))) '&H1C B(4) = Val("&h" & (Mid(MAC, 13, 2))) '&HD9 B(5) = Val("&h" & (Mid(MAC, 16, 2))) '&H50 '这是起始的 6 字节 FF For i = 0 To 5 DataBuff(i) = &HFF Next i '16 个 6 字节的 MAC 码 '这部分也可以用 API 的 CopyMemory 来写 For p = 1 To 16 For i = 0 To 5 DataBuff(p * 6 + i) = B(i) Next i Next p ’输出显示发送码(调试时使用) For i = 0 To 101 If Len(Hex(DataBuff(i))) = 1 Then StrA$ = StrA$ & "0" & Hex(DataBuff(i)) & " Else StrA$ = StrA$ & Hex(DataBuff(i)) & " End If Next i DUBEG.PRINT StrA$ " " Winsock1.SendData DataBuff End Sub Private Sub Command1_Click() Call UDPSenddata("00-11-11-1C-D9-50")’MAC End Sub
分享到:
收藏