用C#實現網絡喚醒功能

C#網絡喚醒模塊
前提:
    一、已知欲開啓機的網卡物理地址(MAC)
    二、用一些第三方應用軟件測試(如:國產LanHelper)能夠開啓LAN內的任一機器,證實硬件設置正確。 
基本思路來自網上一些介紹:
    一、採用UDP 協議
    二、向LAN中的欲開啓PC機發送16進制的「FFFFFF"和網卡物理地址的16次重複
using System;
using System.Net.Sockets;
//we derive our class from a standart one
public class WOLClass:UdpClient   
{
    public WOLClass():base()
    { }
    //this is needed to send broadcast packet
    public void SetClientToBrodcastMode()   
    {
      if(this.Active)
       this.Client.SetSocketOption(SocketOptionLevel.Socket,
                                 SocketOptionName.Broadcast,0);
    }
 }
 
...
//now use this class
 //MAC_ADDRESS should  look like '013FA049'
 private void WakeFunction(string MAC_ADDRESS)  
 {
      WOLClass client=new WOLClass();
      client.Connect(new
         IPAddress(0xffffffff),  //255.255.255.255  i.e broadcast
         0x2fff); // port=12287 let's use this one
      client.SetClientToBrodcastMode();
      //set sending bites
      int counter=0;
      //buffer to be send
      byte[] bytes=new byte[1024];   // more than enough :-)
     //first 6 bytes should be 0xFF
     for(int y=0;y<6;y++)
        bytes[counter++]=0xFF;
     //now repeate MAC 16 times
     for(int y=0;y<16;y++)
     {
         int i=0;
         for(int z=0;z<6;z++)
         {
              bytes[counter++]=
                  byte.Parse(MAC_ADDRESS.Substring(i,2),
                  NumberStyles.HexNumber);
              i+=2;
         }
     }
     //now send wake up packet      int reterned_value=client.Send(bytes,1024);  }
相關文章
相關標籤/搜索