Einfaches Wake on Lan Programm

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Timm3D.

    Einfaches Wake on Lan Programm

    Hallo,
    ich möchte ein einfaches Wake on lan Programm erstellen. Ich habe mich bereits über den aufbau eines Magic-Packet informiert und auch bereits damit etwas herumprobiert. Jedoch bekomme ich es einfach nicht lauffähig.
    Es gibt auf dem Forum einen älteren Eintrag zu diesem Thema mit Code. Dieser sowie andere "funktionierende" Codes helfen mir nicht weiter, da diese erstens nicht funktionieren und zweitens etwas unverständlich sind. Ich muss hier noch dazusagen, dass ich noch ein Anfänger bin, sodass es vielleicht daran liegt, dass ich mit dem Code falsch umgehe oder generell es am Verständnis liegt.

    Hat für mich jemand ein Sample oder eine Idee wie ich da ganze lauffähig mache?
    Also erstmal vorweg, ein lauffähiges und einfaches Sample findet man in unter 1 Minute via Google.
    Zum Beispiel in meinem NETworkManager (**Hust, Hust, Eigenwerbung**) der diese WoL beinhaltet.

    Nun zu deinem Problem.

    Du brauchst:

    1) die MAC-Adresse vom Client den zu aufwecken willst
    2) Broadcast von deinem Subnetz
    3) den Port über den WoL funktioniert

    Es folgt c#-code (Kann man nach VB.NET konvertieren!!!)


    Die MAC-Adresse musst du in Bytes konvertieren:

    C#-Quellcode

    1. public static byte[] ConvertStringToByteArray(string macAddress)
    2. {
    3. // Regex to replace "-" and ":" in MAC-Address
    4. Regex regex = new Regex("[-|:|.]");
    5. string mac = regex.Replace(macAddress, "");
    6. // Build the byte-array
    7. byte[] bytes = new byte[mac.Length / 2];
    8. // Convert the MAC-Address into byte and fill it...
    9. for (int i = 0; i < 12; i += 2)
    10. {
    11. bytes[i / 2] = Convert.ToByte(mac.Substring(i, 2), 16);
    12. }
    13. return bytes;
    14. }


    Anschließend musst du ein MagicPacket erstellen --> 6x FF + 16x die MAC (Kann man bei Wikipedia nachlesen)

    C#-Quellcode

    1. public static byte[] Create(byte[] mac)
    2. {
    3. byte[] packet = new byte[17 * 6];
    4. for (int i = 0; i < 6; i++)
    5. packet[i] = 0xFF;
    6. for (int i = 1; i <= 16; i++)
    7. {
    8. for (int j = 0; j < 6; j++)
    9. packet[i * 6 + j] = mac[j];
    10. }
    11. return packet;
    12. }


    Nun musst du das ganze per UDPClient verschicken... hier kommt die Broadcast / Port zum Einsatz!

    C#-Quellcode

    1. public static void Send(byte[] magicPacket IPAddress broadcast, int port)
    2. {
    3. using (UdpClient udpClient = new UdpClient())
    4. {
    5. udpClient.Connect(broadcast, port);
    6. udpClient.Send(magicPacket, magicPacket.Length);
    7. }
    8. }


    Bei Fragen gerne melden :)
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!