VB编程实现微机的网络远程唤醒
曹淑华
vb语言代码大全网页【摘 要】网络远程唤醒对网络管理来说是一项具有实用性的技术.远程唤醒的方法也多种多样,在VB编程过程中,Winsock控件具有通过传输层协议进行微机的远程通信功能.根据Winsock控件能够发送带有该网卡MAC地址的唤醒数据包的特点,利用VB编程的方法,开发出实现微机网络远程唤醒的程序,以实现网络管理功能.
【期刊名称】《现代电子技术》
【年(卷),期】2010(033)014
【总页数】3页(P61-63)
【关键词】VB编程;Winsock控件;MAC地址;远程唤醒
【作 者】曹淑华
【作者单位】长安大学,信息工程学院,陕西,西安,710064
【正文语种】中 文
【中图分类】TN919;TP316.7
0 引 言
网络远程唤醒技术(wake-on-LAN,WOL)是一项由计算机硬件提供支持的,通过给网卡发送特定数据包从而命令网卡向主板发送开机指令的管理技术。它可以让微机使用人员远程唤醒计算机,并使它们自动完成一些管理服务[1]。
实现远程唤醒的硬件条件:网卡、主板、电源都要支持网络远程唤醒[2]。
网络管理人员经常需要远程唤醒多台微机进行管理。网络远程唤醒的方法也各有不同,通过VC,Delphi语言编程都可以实现远程唤醒,本文通过VB语言编程实现微机的网络远程唤醒。由于VB语言的普及程度更高,语句更易被理解。因此VB编程实现网络的远程唤醒程序更易根据客户需要进行修改和使用。
1 VB实现微机的网络远程唤醒的原理
由于通过网络远程唤醒的计算机处于关机状态,所以不可能通过IP地址和计算机名等进行区别。但是每块网卡都拥有惟一的MAC地址,网卡的MAC地址是识别计算机的惟一定位信息。知道被唤醒计算机网卡的MAC地址后,在本地计算机上运行远程唤醒软件,向网络中发送带有该网卡MAC地址的唤醒数据包。这时,被唤醒计算机虽然处于关机状态,但其网卡控制芯片却能利用三芯连接线从主板上送来的电流(这是因为ATX电源虽然关闭了,但并没有切断主板上所有电源的供给),接收和处理网络上传来的信息包。控制芯片通过检查数据包中的地址信息,可以确认自己是否为该数据包的合法接收者。如果确认是合法接收者,则通过三芯连线向计算机发出开机信号,引导主板开启计算机的电源并执行相应的程序。
下面叙述VB编程设计网络远程唤醒软件。它是一个通过网卡MAC地址远程唤醒计算机的软件,并支持集网络远程唤醒。
2 部分程序代码
(1) 获取微机MAC地址的程序
获取本地计算机的MAC地址方法很多,最原始的方法是直接从网卡的说明书上获取,但这不
一定准确,还可通过在计算机上运行或等工具软件来获取[3]。下面是用VB编程实现获取MAC地址的源程序[4-5]:
Private Function EthernetAddress(LanaNumber As Long) As String
Dim udtNCB As NCB
Dim bytResponse As Byte
Dim udtASTAT As ASTAT
Dim udtTempASTAT As ASTAT
Dim lngASTAT As Long
Dim strOut As String
Dim x As Integer
b_command = NCBRESET
bytResponse = Netbios(udtNCB)
b_command = NCBASTAT
b_lana_num = LanaNumber
b_callname = "* "
b_length = Len(udtASTAT)
lngASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, b_length)
strOut = ""
If lngASTAT Then
b_buffer = lngASTAT
bytResponse = Netbios(udtNCB)
CopyMemory udtASTAT, b_buffer, Len(udtASTAT)
With udtASTAT.adapt
For x = 0 To 5
strOut = strOut & RightMYM("00" &
HexMYM(.adapter_address(x)), 2)
Next x
End With
HeapFree GetProcessHeap(), 0, lngASTAT
End If
EthernetAddress = strOut
End Function
Private Sub CmdClose_Click()
End
End Sub
Private Sub Form_Load()
Text1 = "这台机器的MAC地址是:"& EthernetAddress(0)
(2) 从另一台计算机通过获取的网卡MAC地址远程唤醒该计算机
获得网络上所有机器的MAC地址之后,还必须把这些地址提供给脚本。利用一个独立的文件保存MAC地址信息是较好的选择。使用独立的文件意味着不必把这些信息直接编写到脚本代码里面,从而使代码具有更好的可移植性、更少出错机会。总之,编写脚本代码时应当养成良好的习惯,脚本的主要输入数据应当来自脚本之外,而不是嵌入脚本代码之中。
以下是用VB编程实现微机远程唤醒的源程序[6-9]:
Sub picmov()
Select Case Picture1.Left
Case 3600
Picture1.Left = 3650
wait 500
Case 3650
Picture1.Left = 3600
wait 250
End Select
DoEvents
End Sub
Private Sub Command1_Click(Index As Integer)
AbortThis = False
NumOfCounts = Text1.Text
Picture1.Visible = True
Adet = Text1.Text
Command1(Index).Enabled = False
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论