亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        VB編程實現(xiàn)微機的網(wǎng)絡(luò)遠程喚醒

        2010-04-12 00:00:00曹淑華
        現(xiàn)代電子技術(shù) 2010年14期

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

        關(guān)鍵詞: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 引 言

        網(wǎng)絡(luò)遠程喚醒技術(shù)(wake-on-LAN,WOL)是一項由計算機硬件提供支持的,通過給網(wǎng)卡發(fā)送特定數(shù)據(jù)包從而命令網(wǎng)卡向主板發(fā)送開機指令的管理技術(shù)。它可以讓微機使用人員遠程喚醒計算機,并使它們自動完成一些管理服務(wù)[1]。

        實現(xiàn)遠程喚醒的硬件條件:網(wǎng)卡、主板、電源都要支持網(wǎng)絡(luò)遠程喚醒[2]。

        網(wǎng)絡(luò)管理人員經(jīng)常需要遠程喚醒多臺微機進行管理。網(wǎng)絡(luò)遠程喚醒的方法也各有不同,通過VC,Delphi語言編程都可以實現(xiàn)遠程喚醒,本文通過VB語言編程實現(xiàn)微機的網(wǎng)絡(luò)遠程喚醒。由于VB語言的普及程度更高,語句更易被理解。因此VB編程實現(xiàn)網(wǎng)絡(luò)的遠程喚醒程序更易根據(jù)客戶需要進行修改和使用。

        1 VB實現(xiàn)微機的網(wǎng)絡(luò)遠程喚醒的原理

        由于通過網(wǎng)絡(luò)遠程喚醒的計算機處于關(guān)機狀態(tài),所以不可能通過IP地址和計算機名等進行區(qū)別。但是每塊網(wǎng)卡都擁有惟一的MAC地址,網(wǎng)卡的MAC地址是識別計算機的惟一定位信息。知道被喚醒計算機網(wǎng)卡的MAC地址后,在本地計算機上運行遠程喚醒軟件,向網(wǎng)絡(luò)中發(fā)送帶有該網(wǎng)卡MAC地址的喚醒數(shù)據(jù)包。這時,被喚醒計算機雖然處于關(guān)機狀態(tài),但其網(wǎng)卡控制芯片卻能利用三芯連接線從主板上送來的電流(這是因為ATX電源雖然關(guān)閉了,但并沒有切斷主板上所有電源的供給),接收和處理網(wǎng)絡(luò)上傳來的信息包??刂菩酒ㄟ^檢查數(shù)據(jù)包中的地址信息,可以確認自己是否為該數(shù)據(jù)包的合法接收者。如果確認是合法接收者,則通過三芯連線向計算機發(fā)出開機信號,引導主板開啟計算機的電源并執(zhí)行相應(yīng)的程序。

        下面敘述VB編程設(shè)計網(wǎng)絡(luò)遠程喚醒軟件。它是一個通過網(wǎng)卡MAC地址遠程喚醒計算機的軟件,并支持群集網(wǎng)絡(luò)遠程喚醒。

        2 部分程序代碼

        (1) 獲取微機MAC地址的程序

        獲取本地計算機的MAC地址方法很多,最原始的方法是直接從網(wǎng)卡的說明書上獲取,但這不一定準確,還可通過在計算機上運行winipcfg.exe或ipconfig.exe等工具軟件來獲取[3]。下面是用VB編程實現(xiàn)獲取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) 從另一臺計算機通過獲取的網(wǎng)卡MAC地址遠程喚醒該計算機

        獲得網(wǎng)絡(luò)上所有機器的MAC地址之后,還必須把這些地址提供給腳本。利用一個獨立的文件保存MAC地址信息是較好的選擇。使用獨立的文件意味著不必把這些信息直接編寫到腳本代碼里面,從而使代碼具有更好的可移植性、更少出錯機會。總之,編寫腳本代碼時應(yīng)當養(yǎng)成良好的習慣,腳本的主要輸入數(shù)據(jù)應(yīng)當來自腳本之外,而不是嵌入腳本代碼之中。

        以下是用VB編程實現(xiàn)微機遠程喚醒的源程序[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地址程序運行后得到的結(jié)果,如圖1所示。

        圖1 程序運行結(jié)果(一)

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

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

        圖2 程序運行結(jié)果(二)

        4 結(jié) 語

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

        參考文獻

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

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

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

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

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

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

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

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

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

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

        亚洲精品98中文字幕| 亚洲精品亚洲人成在线下载| 最新永久免费AV网站| 国产老熟女伦老熟妇露脸| 奶头又大又白喷奶水av| 性色av无码不卡中文字幕| 偷拍网日本一区二区三区| av国产免费在线播放| 国产欧美日韩中文久久| 久无码久无码av无码| 99久久99久久精品免观看| 视频一区精品中文字幕| 少妇愉情理伦片丰满丰满| 亚洲va在线∨a天堂va欧美va| 8090成人午夜精品无码| 午夜视频在线观看国产19| 曰本女人与公拘交酡| 久久婷婷综合色丁香五月| 日产精品一区二区免费| 一本之道久久一区二区三区| 欧美极品jizzhd欧美| 538任你爽精品视频国产| 亚洲av网站在线免费观看| 国产成人午夜福利在线观看| 国产a v无码专区亚洲av| 真人无码作爱免费视频禁hnn| 欧美日韩国产亚洲一区二区三区 | 国产亚州精品女人久久久久久 | 亚洲精品乱码久久久久久| 亚洲色丰满少妇高潮18p| 欧美三级超在线视频| 国产自拍视频免费在线观看| 国产国产人免费人成免费视频| 亚洲av无码专区亚洲av| 激情人妻中出中文字幕一区| 久久国内精品自在自线| 国产激情内射在线影院| 92精品国产自产在线观看48页| 日韩五码一区二区三区地址| 成人免费xxxxx在线观看| 最近中文字幕mv在线资源|