如何使用WOL(Wake on Lan)C#或Java打开网络计算机

时间:2011-07-29 09:00:25

标签: c# network-programming bios wake-on-lan netbios

请您通过网卡和BIOS的WOL选项给我完整的代码打开联网计算机。

请向我提供所有细节,并请尝试给我工作代码。

1 个答案:

答案 0 :(得分:3)

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);
    }
 }    

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);
     }

See more here