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