Re: Wake on LAN Paket generieren

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Hallo Karl,

Vor einiger Zeit habe ich mir mal so ein kleines Programm geschrieben...

------------------------------------------------------------------------------------
using System;
using System.Net.Sockets;

namespace WakeOnLan
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class WakeOnLan
{

private byte[] m_DataToSend;

private byte[] m_Mac;
private int m_Port;
private string m_Address;


public WakeOnLan()
{
m_DataToSend = new Byte[17*6];
m_Mac = new byte[6];
}

public byte[] MAC
{
get { return m_Mac; }
set { m_Mac = value; }
}

public int Port
{
get { return m_Port; }
set { m_Port = value; }
}

public string Address
{
get { return m_Address; }
set { m_Address = value; }
}


public void WakeUp()
{
UdpClient udpClient = new UdpClient(m_Address, m_Port);
int nBytesSent = udpClient.Send(m_DataToSend, m_DataToSend.Length);
udpClient.Close();
}


public void ParseArgs(string[] args)
{
string sMac = "";
string sAddress = "255.255.255.255";
string sPort = "9";

switch (args.Length)
{
// nur die Mac-Addresse wurde übergeben.
case 1:
sMac = args[0];
break;

// Mac-Adresse und Port oder IP-Addresse wurde übergeben.
case 3:
sMac = args[2];
switch (args[0])
{
case "-a" : sAddress = args[1]; break;
case "-p" : sPort = args[1]; break;
default : throw new ApplicationException(); break;
}
break;

// Mac-Adresse, Port und IP-Addresse wurde übergeben.
case 5:
{
sMac = args[4];
switch (args[0])
{
case "-a" : sAddress = args[1]; break;
case "-p" : sPort = args[1]; break;
default : throw new ApplicationException();
}
switch (args[2])
{
case "-a" : sAddress = args[3]; break;
case "-p" : sPort = args[3]; break;
default : throw new ApplicationException();
}
break;
}

default : throw new ApplicationException();
}

string[] macArray = sMac.Split(new char[]{':',' ','.'});
for (int i=0; i<6; i++)
{
m_Mac[i]=Convert.ToByte(macArray[i], 16);
}

m_Port = int.Parse(sPort);
m_Address = sAddress;

for(int e=0; e<6; e++)
{
m_DataToSend[e] = 0xFF;
}
for(int i=6; i<102; i+=6)
{
for(int a=0; a<6; a++)
{
m_DataToSend[i+a] = m_Mac[a];
}
}
}


[STAThread]
static void Main(string[] args)
{
Console.WriteLine();
Console.WriteLine("Magic-Packet generater by Christian Jost\r\n");

WakeOnLan wol = new WakeOnLan();

try
{
wol.ParseArgs(args);
Console.Write("Waking Up Host " + wol.Address + ":" + wol.m_Port + "
..");
for (int i=0; i<5; i++)
{
wol.WakeUp();
System.Threading.Thread.Sleep(500);
Console.Write('.');
}
}
catch
{
Console.WriteLine("Syntax: MagicPacket.exe [-a IP-address] [-p port]
mac-address");
Console.WriteLine("for example: 'WakeOnLan.exe -a 255.255.255.255 -p 9
f3:22:a3:ff:47:9c'");
}
}
}
}


.



Relevant Pages

  • Re: How to detect interface?
    ... interface is up due WakeOnLan on PC. ... Without actually waking up the PC ... I agree, considering to the switch it is just a mac, you would need ...
    (comp.dcom.sys.cisco)
  • Re: [Switch()...case]From String to enum
    ... switch(args[0]) ... One also sometimes can switch on a hash code of ... or even a perfect hash code. ... {public void run ...
    (comp.lang.java.help)