Re: Wake on LAN Paket generieren
- From: "Christian Jost" <christian_dot_jost_at_timeware_dot_ch>
- Date: Mon, 20 Feb 2006 13:01:39 +0100
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'");
}
}
}
}
.
- Prev by Date: (ADO.net) Geht es nicht auch ohne Binding ?
- Next by Date: Re: Sourcecode Umstellung von 2.0 auf 1.1
- Previous by thread: Re: Wake on LAN Paket generieren
- Next by thread: Sourcecode Umstellung von 2.0 auf 1.1
- Index(es):
Relevant Pages
|