999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VB編程實現微機的網絡遠程喚醒

2010-04-12 00:00:00曹淑華
現代電子技術 2010年14期

摘 要:網絡遠程喚醒對網絡管理來說是一項具有實用性的技術。遠程喚醒的方法也多種多樣,在VB編程過程中,Winsock控件具有通過傳輸層協議進行微機的遠程通信功能。根據Winsock控件能夠發送帶有該網卡MAC地址的喚醒數據包的特點,利用VB編程的方法,開發出實現微機網絡遠程喚醒的程序,以實現網絡管理功能。

關鍵詞:VB編程;Winsock控件;MAC地址; 遠程喚醒

中圖分類號:TN919; TP316.7 文獻標識碼:A 文章編號:1004-373X(2010)14-0061-03

Wake-on-LAN by VB Programming

CAO Shu-hua

(Information Engineering Institute, Chang’an University, Xi’an 710064, China)

Abstract: The wake-on-LAN is a very practical technology for the network management. There are many ways for the wake-on-LAN, Winsock can carry out long-range PC communication by using transfer-layer agreements in the process of VB programming. Because of that Winsock control can send the wake-up packet with MAC address, a program of achieving wake-on-LAN of microcomputers was developed by VB programming to realize the network management.

Keywords: VB Programming; Winsock control; MAC address; wake-on-LAN

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地址方法很多,最原始的方法是直接從網卡的說明書上獲取,但這不一定準確,還可通過在計算機上運行winipcfg.exe或ipconfig.exe等工具軟件來獲取[3]。下面是用VB編程實現獲取MAC地址的源程序[4-5]:

Private Function EthernetAddress(LanaNumber As Long) As String

Dim udtNCBAs NCB

Dim bytResponse As Byte

Dim udtASTAT As ASTAT

Dim udtTempASTAT As ASTAT

Dim lngASTAT As Long

Dim strOutAs String

Dim xAs Integer

udtNCB.ncb_command = NCBRESET

bytResponse = Netbios(udtNCB)

udtNCB.ncb_command = NCBASTAT

udtNCB.ncb_lana_num = LanaNumber

udtNCB.ncb_callname = \"* \"

udtNCB.ncb_length = Len(udtASTAT)

lngASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, udtNCB.ncb_length)

strOut = \"\"

If lngASTAT Then

udtNCB.ncb_buffer = lngASTAT

bytResponse = Netbios(udtNCB)

CopyMemory udtASTAT, udtNCB.ncb_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

Dim sHostName As String

Dim data As String

Dim MacAdd As String

Dim IPAddress As String

Winsock2.Protocol = sckUDPProtocol

Winsock2.RemoteHost = \"255.255.255.255\"

Winsock2.RemotePort = \"4000\"

If Index = 1 Then

For say = 0 To List1.ListCount - 1

List1.ListIndex = say

MacAdd = List1.List(say)

data = \"FFFFFFFFFFFF\"

For i = 1 To 16

data = data MacAdd

Next i

data = hex2ascii(data)

For t = 1 To Adet

Text2.Text = \"正在呼叫喚醒 \" MacAdd

′取消按鈕

If AbortThis Then GoTo Aborted

Winsock2.SendData data

picmov

Winsock2.Close

picmov

Text1.Text = t

DoEvents

Next

Next

Else

MacAdd = txtmac.Text

data = \"FFFFFFFFFFFF\"

For i = 1 To 16

data = data MacAdd

Next i

data = hex2ascii(data)

For t = 1 To Adet

Text2.Text = \"正在呼叫喚醒 \" MacAdd

′取消

If AbortThis Then GoTo Aborted

Winsock2.SendData data

picmov

Winsock2.Close

picmov

Text1.Text = t

DoEvents

Next

End If

End Sub

Public Sub wait(ByVal dblMilliseconds As Double)

Dim dblStart As Double

Dim dblEnd As Double

Dim dblTickCount As Double

dblTickCount = GetTickCount()

dblStart = GetTickCount()

dblEnd = GetTickCount + dblMilliseconds

Do

DoEvents

dblTickCount = GetTickCount()

Loop Until dblTickCount > dblEnd Or dblTickCount

End Sub

′提取MAC地址,Macs.txt為腳本文件

Private Sub Form_Load()

Dim Mac

allmacs = ReadMacs(App.Path \"/Macs.txt\")

Mac = Split(allmacs, \",\")

ReDim PCs(UBound(Mac))

For t = 0 To UBound(Mac)

SpltP = (InStr(Mac(t), \":\"))

If SpltP > 0 Then

PCs(t) = RightMYM(Mac(t),

Len(Mac(t)) - SpltP)

Mac(t) = MidMYM(Mac(t), 1, SpltP - 1)

Else

PCs(t) = \"N/A\"

End If

List1.AddItem Mac(t)

Next

End Sub

Private Sub List1_Click()

txtmac.Text = List1.List(List1.ListIndex)

Text3.Text = PCs(List1.ListIndex)

End Sub

3 使用方法

第一步獲取微機MAC地址程序運行后得到的結果,如圖1所示。

圖1 程序運行結果(一)

第二步通過MAC地址遠程喚醒微機程序運行后得到的結果,如圖2所示。

通過第一步、第二步程序的運行,可以遠程喚醒1臺或多臺微機。程序中使用的MAC地址是在局域網中獲取的,并在局域網中遠程喚醒微機取得成功。如果需要通過互聯網遠程喚醒微機還需做進一步修改和調試。

圖2 程序運行結果(二)

4 結 語

主要介紹了遠程喚醒技術基本原理、實現遠程喚醒所需的軟硬件條件,并給出局域網內基于VB的遠程喚醒程序的VB編程主要代碼。遠程喚醒技術十分方便、實用,大大節省微機管理員的時間和提高工作效率,特別在微機機房的管理中得到廣泛的應用[10]。實現微機遠程喚醒方法有很多,本文從VB編程設計角度加以研究、討論。對于廣域網上的遠程喚醒的方法還有待于更深層次的研究與討論。

參考文獻

[1]周文龍.跨網段遠程網絡喚醒計算機的實現[ J] .中國科技博覽,2009(14):193,78.

[2]李金剛,劉春芳.局域網內遠程喚醒多臺計算機的實現[ J] .福建電腦,2006(8):185-196.

[3]馬鵬衛,拓守恒.網卡遠程喚醒的實現[ J] .科技資訊,2006(8):94-95.

[4]寧正元,潘曉文,蔣萌輝,等.Visual Basic程序設計教程[M].北京:清華大學出版社,2004.

[5]徐爾貴.VISUAL BASIC 6.0教程[M].北京:電子工業出版社,2001.

[6]宋偉,吳建國.Visual Basic 6.0高級編程[M].北京:清華大學出版社,2002.

[7]李廷文.VB控件高級編程[M].北京:人民郵電出版社,2000.

[8][ 美] JAMES D.Foxall.VISUAL BASIC編程標準[M].北京:機械工業出版社,2000.

[9]陳涌泉.Visual Basic第三方控件大全[M].北京:中國電力出版社,2002.

[10]戚利.網絡遠程喚醒軟件的開發[ J] .電腦編程技巧與維護,2008(6):53-55.

主站蜘蛛池模板: 一边摸一边做爽的视频17国产| 在线无码九区| 欧美狠狠干| 亚洲日韩精品无码专区97| 日韩麻豆小视频| 91色老久久精品偷偷蜜臀| 色综合狠狠操| 久久大香香蕉国产免费网站| 91麻豆国产视频| 黄片在线永久| 亚洲一区无码在线| 国产乱子伦视频三区| 亚洲一区二区约美女探花| 亚洲第一视频区| 99精品这里只有精品高清视频| 国产亚洲欧美另类一区二区| 日韩一区精品视频一区二区| 久久视精品| 在线观看免费黄色网址| 国产拍揄自揄精品视频网站| 91精品久久久无码中文字幕vr| 欧美精品在线视频观看| 国内精品手机在线观看视频| 第九色区aⅴ天堂久久香| 国产亚洲高清视频| 亚洲中文无码h在线观看| 中文字幕在线日本| 97一区二区在线播放| 国产免费a级片| 国产精品一区在线观看你懂的| 亚洲一区免费看| 老色鬼欧美精品| 97综合久久| 91免费国产高清观看| 丁香婷婷在线视频| 日韩精品毛片| 尤物精品国产福利网站| 欧美精品啪啪| 欧美成人综合在线| 在线欧美一区| 免费在线播放毛片| 伊人久久大香线蕉影院| 在线无码av一区二区三区| 九色最新网址| 9久久伊人精品综合| 久久精品午夜视频| 又粗又大又爽又紧免费视频| 亚洲精品综合一二三区在线| 免费播放毛片| 国产在线观看第二页| 亚洲国产欧洲精品路线久久| 在线观看91香蕉国产免费| 国产精品手机在线播放| 精品乱码久久久久久久| 亚洲A∨无码精品午夜在线观看| 中文字幕一区二区人妻电影| 国产一区二区精品福利| 欧美日一级片| 国产精品亚洲欧美日韩久久| 亚洲精品无码高潮喷水A| 日韩免费视频播播| 真人高潮娇喘嗯啊在线观看| 一本大道香蕉中文日本不卡高清二区| a国产精品| 亚洲综合一区国产精品| 色噜噜在线观看| 一本大道香蕉久中文在线播放| 欧美伦理一区| 不卡网亚洲无码| 国产欧美日韩专区发布| 国产女人在线| 国产成人精品亚洲日本对白优播| 午夜不卡福利| 久久国产毛片| AⅤ色综合久久天堂AV色综合| 热思思久久免费视频| 国产一级片网址| AⅤ色综合久久天堂AV色综合| 国产大片黄在线观看| 精品国产成人三级在线观看| 亚洲精品国产日韩无码AV永久免费网| 国产永久在线观看|