天天看點

用C#實作網絡喚醒功能

C#網絡喚醒子產品

前提:

    1、已知欲開啟機的網卡實體位址(MAC)

    2、用一些第三方應用軟體測試(如:國産LanHelper)可以開啟LAN内的任一機器,證明硬體設定正确。 

基本思路來自網上一些介紹:

    1、采用UDP 協定

    2、向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);

繼續閱讀