線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4489
推到 Plurk!
推到 Facebook!

[推薦] 淺談 Wake On Lan

 
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-08-15 16:32:43 IP:61.218.xxx.xxx 未訂閱

淺談 Wake On Lan

作者:北縣教網張啟中 資料來源:http://enews.tpc.edu.tw/document/technology/2001/教網中心張啟中「淺談 Wake On Lan」.htm 遠端喚醒(Wake On Lan,WOL)是許多網管人員喜歡使用的功能之一。有了遠端喚醒,對於不需要24小時開機運作的機器,可以在需要的時候,直接從遠端透過網路將其開機,然後進行維護,兼顧了省電與維護便利的需求。這篇文章將簡單的探討一下有關遠端喚醒功能的實作方式及其原理,程式部分,則以 C Builder 5.0(Enterprise 版本)為主,讀者在瞭解原理後,可以改以自己熟悉的語言來撰寫。 先談談遠端喚醒功能,所需具備的硬體條件: (1)主機板必須支援 Wake On Lan 的功能。通常有支援的主機板,它必定會有一個接口,以連接到網路卡,記得,如果你的主機板有支援 WOL 的功能的話,在BIOS的設定中,你得將這個功能選項打開,這項功能通常在 Power Management 的選單中。 (2)你的網路卡必須支援Wake On LAN,這樣的網路卡比起一般的網路卡稍貴,但大約在 500-600元間,安裝時,記得要將連接線連接到主機版,否則,網路卡可是無法將開機訊號通知主機版的。 當硬體環境符合以上條件,那麼只需有一個遠端喚醒的程式,就可以達到遠端喚醒的功能了。在 AMD的網站中有提供一個程式,叫 Magic Package,它可以讓你設定時間,喚醒一台機器,甚至一群機器,相當有趣。讀者若有興趣可以到 http://www.amd.com/us-en/Networking/TechnicalResources/0,,50_2334_2452_2456,00.html 下載,檔案大小約 924 KBytes 左右。 接下來我將說明遠端喚醒程式的原理與實作方式,由於牽涉到程式寫作,所以,如果讀者只對應用比較有興趣,那麼以下的部分可以略過。一般而言,實作遠端喚醒功能的方式有許多種,其中一種 AMD 稱為 Magic Package (神奇封包),他的原理相當簡單,就是網路卡它會利用極低的電壓,來維持一個基本運作,它會不斷的偵測外界傳來的訊號,如果該封包的訊號包含有一組 Magic Package 時,它就會發出開機訊號給主機板,讓主機板啟動,你的電腦當然也就能夠遠端喚醒,再加上遠端控管的軟體,哈哈,天下無敵,又省電,又方便….. 問題是這個 Magic Package 是怎樣的格式呢? 簡單,根據 AMD 的說法,這個 Magic Package 必須要是這樣的格式 DESTINATION SOURCE MISC 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 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 MISC CRC 仔細觀察這段格式,讀者可以發現,連續有六個位元組(Bytes),其值為 FF,這是同步訊號,接下來,連續重複 16 次出現的11 22 33 44 55 66,則是遠端欲開機電腦中,網路卡的 MAC 位址,這是神奇封包的最主要部分,其餘部分,在實作時可以忽略,因為主要部分只要符合前述的規定(6 bytes 的同步訊號 FF 連續16次網卡的MAC 位址),它是可以位於封包的任何位置。 瞭解了原理,我們就可以開始撰寫簡易的遠端喚醒程式,由於要送出網路封包,所以,我們將運用 TCP/IP 協定來實作,一方面是較容易撰寫,二方面是TCP/IP協定的運用層面較廣,但運用TCP/IP來實作,有幾點是必須注意的: (1) TCP/IP協定在傳輸層,分為TCP與UDP,我們必須選哪個?由於TCP的協定,是屬於可信賴性的協定,也就是溝通的雙方必須都要交握確認成功後,才開始傳資料,否則將產生錯誤訊息,顯然,選擇TCP協定將導致遠端喚醒程式無法運作,因為,被喚醒端尚未開機,所以,TCP在雙方交握確認階段是不可能成功的,當然資料也就傳不出去。 (2) 不管TCP或UDP都必須指定IP及Port號,IP位址部分應該填該網段的廣播位址,至於Port 號,由於遠端喚醒功能是由OSI的第二層鏈結層在處理,因此這部分可以不考慮,隨便填一個就好,80埠是相當不錯的選擇,因為它可以通過大部分的防火牆。 (3) MAC如何的取得?最正規的作法是利用ARP協定,透過程式事前取得,並建立成資料庫,但又是另一個主題了,本文將不介紹這部分,留待來日再談…….至於MAC位址,讀者就先啟動被喚醒端的電腦,利用 ipconfig/all 指令,先記下其 MAC位址,以便測試時填入。 以下為主要程式碼片段,其中 NMWOL 是 C Builder 5.0(Enterprise版本)所提供之 VCL 元件,在 FastNet 頁次中,元件名 NMUDP )
     void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
     byte mac[6];           // 存放被喚醒端 MAC Address
     byte buf[102];        // 存放 magic package
     int i,j;                     // 迴圈變數
          // 讀入所輸入之 MAC 位址
     mac[0] = StrToInt("0x" Edit2->Text);
     mac[1] = StrToInt("0x" Edit3->Text);
     mac[2] = StrToInt("0x" Edit4->Text);
     mac[3] = StrToInt("0x" Edit5->Text);
     mac[4] = StrToInt("0x" Edit6->Text);
     mac[5] = StrToInt("0x" Edit7->Text);        // 建立 magic package 內容
    // stage 1: 同步訊號
    for (i=0; i<6; i  ) {
        buf[i] = 0xFF;
    }       // stage 2: 被喚醒端 Mac 位址
   for (i=0; i<16; i  )
      for (j=0; j<6; j  )
          buf[(i*6 j 6)] = mac[j];       // 傳送 magic package 至被喚醒端
   NMWOL->RemoteHost = Edit1->Text;              // 設定被喚醒端的廣播 IP
   NMWOL->RemotePort = 80;                             // 設定被喚醒端的廣播 Port Number
   NMWOL->SendBuffer(buf, 102, 102);              // 傳送,總共 102 Bytes( 6   16*6 )
   ShowMessage("Magic Package 已經傳送....");    }    
完整程式請按此 下載 程式執行畫面 written by 北縣教網張啟中 2002/03/05 時間就是金錢---[ 發問前請先找找舊文章]
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-08-20 02:24:54 IP:61.70.xxx.xxx 未訂閱
我已經將Wake On Lan 的文件上傳 想進一步研究的朋友可以去下載 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19285
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
yaoyao01tw
一般會員


發表:28
回覆:17
積分:9
註冊:2003-01-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-02-13 03:04:34 IP:220.134.xxx.xxx 訂閱
缺少CC3250MT.DLL這個檔案!
bugmans
高階會員


發表:95
回覆:322
積分:188
註冊:2003-04-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-02-13 09:20:39 IP:125.225.xxx.xxx 未訂閱
http://users.ox.ac.uk/~exet0964/wac.html
這網頁有提供BCB5 Runtime Library,壓縮檔裡面就包含CC3250MT.DLL
http://users.ox.ac.uk/~exet0964/rtl.zip
系統時間:2017-10-24 13:59:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!