WakeOnLAN Library 1.6 [04.12.2013] — Jetzt open source.

    • Release
    • Open Source

    Es gibt 51 Antworten in diesem Thema. Der letzte Beitrag () ist von nikeee13.

      WakeOnLAN Library 1.6 [04.12.2013] — Jetzt open source.

      Hi,
      mir war gerade mal langweilig, da dachte ich mir, dass ich mal eine (gut) dokumentierte Library mit höchstmöglicher Kompatibilität machen kann. Nur, um zu sehen, was alles dazu gehört.

      Name der Library:
      WakeOnLan

      Beschreibung:
      Diese Library stellt (Erweiterungs)Methoden zum Senden von Wake-On-LAN-Signalen bereit.

      Es wurde für AnyCPU kompiliert. Außerdem wurde die Assembly mit einem Strong Name signiert und hält alle Microsoft-Regeln der Codeanalyse ein. Demzufolge ist alles, was öffentlich ist, mit XML-Kommentaren versehen und somit IntelliSense-Kompatibel.

      Der Stammnamespace ist System.Net. Somit lässt es so verwenden, wie es im Beispiel gezeigt wird.

      Alle WOL-Signale kommen über UDP. Standardmäßig ist Port 7 eingestellt. Der Port ist aber per Methodenüberladung änderbar.

      Klassendiagramm:

      Online-Dokumentation

      Anwendungsbeispiel:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. System.Net.IPAddress.Broadcast.SendWol(&H00, &H48, &H90, &HDA, &H3B, &H30)
      oder

      VB.NET-Quellcode

      1. Dim ip as New IPAddress(New Byte() {192,168,1,23})
      2. ip.SendWol(&H00, &H48, &H90, &HDA, &H3B, &H30) 'WOL nur an eine bestimmte IP senden
      oder

      VB.NET-Quellcode

      1. Dim endpoint as New IPEndPoint(New IPAddress(New Byte() {192,168,1,23}), 9001)
      2. endpoint.SendWol(&H00, &H48, &H90, &HDA, &H3B, &H30) 'WOL nur an eine bestimmte IP über einen bestimmten Port senden


      Verwendete Programmiersprache:
      Früher: Visual Basic .NET (IDE: VS 2012 Professional)
      Jetzt: C# 5.0 (IDE: VS 2012 Professional)

      Systemanforderungen:
      .NET Framework 4.5, 4.0, 3.5 oder 2.0

      Download:
      - v1.1: WakeOnLan.zip - .NET 3.5 - 42,2 KB
      - v1.2: WakeOnLan.zip - .NET 4 Client Profile - 45,2 KB
      - v1.4: WakeOnLanLibrary.zip - .NET 2.0, 3.5, 4.5 - 21,4 KB
      - v1.5: WakeOnLanLibrary_1.5.zip - .NET 2.0, 3.5, 4.0, 4.5 - 29,2 KB

      Online-Dokumentation
      GitHub-Repository:
      github.com/nikeee/wake-on-lan-library


      NuGet:

      Quellcode

      1. PM> Install-Package WakeOnLAN


      Lizenz/Weitergabe:
      Freeware
      WakeOnLan Library von nikeee13 steht unter der GNU General Public License v3.0.

      Mich würde freuen, zu hören, wo die Library ihren Einsatz findet. :)

      ToDo:
      • ?


      Changelog:

      Spoiler anzeigen

      v1.4.0.0:
      • [+] Separat kompilierte Version für .NET 4.0 hinzugefügt.
      • [+] Online-Dokumentation
      • [+] Interne Umgestaltungen


      v1.4.0.0:
      • [+] ToPhysicalAddress()-Funktion zur MacAddress-Klasse hinzugefügt
      • [#] MacAddress-Klasse als obsolet markiert
      • [#] Die entsprechenden Methoden als obsolet markiert
      • [+/#] Sämtliche Methoden und Erweiterungsmethoden, die die MacAddress-Klasse verwendeten, auf PhysicalAddress umgeschrieben
      • [+] Separat kompilierte Versionen für .NET 4.5, 3.5 und 2.0
      • [+] "Richtiger" Support des neuen Async-Patterns TAP (nur in der 4.5er-Version enthalten)
      • [#] SercureOn-Password-Support verbessert
      • [+] Erweiterungsmethoden für die PhysicalAddress-Klasse des Frameworks hinzugefügt:
        - GetAddressType()
        - GetAddressAdministrator()
      • [+] 2 Enumerationen hinzugefügt:
        - PhysicalAddressType (Unicast/Multicast)
        - PhysicalAddressAdministrator (Global/Local)
      • [#] Verbesserung in der Lokalisierung


      v1.2.0.0:
      • [+] MacAddress-Klasse mit Parsing
      • [+] SecureOn-Unterstützung


      Legende:
      [+]: Hinzugefügt
      [#]: Geändert/Verbessert
      [-]: Entfernt
      Von meinem iPhone gesendet

      Dieser Beitrag wurde bereits 30 mal editiert, zuletzt von „nikeee13“ ()

      Mein Respekt. Das is ma was geniales. Hätte sogar nen Verwendungszweck davon :P
      kannst du mir aber mal sagen, in welchen Stadien ich den Rechner aus dem Sleep holen kann?
      (Hibernate, Stand-By)
      ich werde bescheid sagen, sobald ich das Tool fertig habe (wird nicht groß sein, ist vmtl. auch nur ne windos exe ohne Gui die beim Start automatisch den Rechner startet)

      AliveDevil schrieb:

      Mein Respekt.
      90% der Arbeit war die Dokumentation. Das bisschen Magicpacket ist nicht viel Arbeit. D:

      AliveDevil schrieb:

      kannst du mir aber mal sagen, in welchen Stadien ich den Rechner aus dem Sleep holen kann?
      (Hibernate, Stand-By)
      Also gerade habe ich meinen Rechner via (selbstgeschriebener) WP7-App aus dem Hinbernate geholt. In der Arbeit habe ich einen WPF-Client, der auch bei völlig heruntergefahrenen Rechnern funktioniert (sollte es ja auch ;)).
      Voraussetzung ist aber immer, dass WOL im BIOS und in den Einstellungen der Netzwerkkarte (im Geräte-Manager) aktiviert ist.

      Diese Library kann man aber nicht auf einem WP7 verwenden (da dort z.B. der UdpClient fehlt). Ich habe mir noch mal etwas kompatibles zu WP7 erstellt - besteht daran bedarf?
      Außerdem habe ich mir eine zusätzliche Klasse namens "MacAddress" erstellt. Diese kann Adressen aus einem String parsen und hat eine WOL-Methode. Braucht das wer?
      Wenn ja, kann ich Euch das Mittwoch(?) noch mal reinstellen.

      AliveDevil schrieb:

      (wird nicht groß sein, ist vmtl. auch nur ne windos exe ohne Gui die beim Start automatisch den Rechner startet)
      Ich habe mir einen kleinen WPF-WOL-Manager geschrieben, bei dem man Clients in eine Liste eintragen und einzeln (oder per Auswahl) hochfahren kann.
      Von meinem iPhone gesendet
      Man kann einen Rechner, der im ausgeschalteten Zustand ist, wieder hochfahren. LOL.
      Das is doch ma das netteste was ich je gehört habe :P

      Zu deinen Sachen: eine WP7 App ist in meinen Augen nicht notwendig, da ich den Rechner wenn dann über WAN starten würde und das ja nicht geht (leider).
      Zu dem String-Parser: wäre nice, kannst du ja einbauen.
      Den WPF-WOL-Manager kannst du ja noch als Erweiterung bzw. als beispielprojekt verteilen. So als How-To-Use.

      AliveDevil schrieb:

      Man kann einen Rechner, der im ausgeschalteten Zustand ist, wieder hochfahren. LOL.
      Das is doch ma das netteste was ich je gehört habe :P
      Das... ist für jeden Systemintegrator standard. ;)
      Aber nur, wenn entsprechende Einstellungen getätigt wurden (siehe meine erste Antwort). Außerdem wird es bei WLAN-Rechnern wohl nicht funktionieren... glaube ich jedenfalls.
      de.wikipedia.org/wiki/Magic_Packet#Magic_Packet

      Alles, was man braucht, ist die MAC-Adresse und eventuell noch das Zielnetz; ansonsten Broadcast in das LAN. ;)

      AliveDevil schrieb:

      da ich den Rechner wenn dann über WAN starten würde und das ja nicht geht (leider).
      Ich sehe dort kein Problem. Du müsstest nur das Portforwarding richtig einstellen. Dann sollte das auch gehen. Ich gehe nicht davon aus, dass man im WAN Broadcast-Packets senden kann. Deshalb brauchst du an der Stelle entweder eine statische IP oder DynDNS. Daran kannst du das Packet dann schicken.
      Muss ich mal probieren.

      AliveDevil schrieb:

      Den WPF-WOL-Manager kannst du ja noch als Erweiterung bzw. als beispielprojekt verteilen. So als How-To-Use.
      Mal sehen. :)
      Von meinem iPhone gesendet

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()

      AliveDevil schrieb:

      Man kann einen Rechner, der im ausgeschalteten Zustand ist, wieder hochfahren. LOL.
      Das is doch ma das netteste was ich je gehört habe

      Wusstest du das wirklich vorher nicht? Das gibt es schon seit 1995.
      Man muss nicht alles wissen @Quadsoft: :P
      Mit dem WAhN Zeug: darfst du gerne testen.
      Zielnetz bedeutet Subnet, richtig? Gut...
      Broadcast im LAN: sollte möglich sein.
      Portforwarding: ja gut...funktioniert. DynDNS: hab ich auch.
      Das Problem ist nur der WLAN-WOL. Denn der Rechner ist nur per WLAN an das Netzwerk gebunden, bzw. per LAN an meinen lokalen Rechner (Netbook als Hometestserver)

      Eig. müsste das doch auch mit einem Repeater funktionieren oder? Also FritzBox Mainrouter -> WLAN -> Repeater -> LAN -> Rechner
      Wär aufjedenfall das Testen Wert, kann ich den Server doch noch in den Keller stellen *g*

      Aber stell dein WPF-WOL-Tool mal als WTFPL OpenSource zur Verfügung.
      Ich habe jetzt das als MAC-Adress-Klasse:


      Verbesserungsvorschläge? Überschreibungs-/Implementierungswünsche?

      Edit:
      Ich habe die Wol-Methoden noch mal in eine extra Extensionmethods-Klasse ausgelagert, da sie ja nicht zur eigentlichen MAC-Adresse gehören.

      Übrigens ist mir aufgefallen, dass ich nicht bei jeder Methode dazugeschrieben habe, welche Exceptions ausgelöst werden können. Das kommt dann noch im nächsten Update.

      Kennt jemand von Euch etwas, womit man sich eine schöne Dokumentation (so wie bei AForge und MSDN) aus den XML-Daten machen kann?
      Von meinem iPhone gesendet

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()

      Ich werde mir Sandcastle mal anschauen.

      Bis jetzt habe ich folgendes:


      Vorschläge? Verbesserungen?
      Langsam wird es unübersichtlich mit den ganzen Overloads - hat da jemand eine Idee, wie man es übersichtlicher machen kann?
      Von meinem iPhone gesendet

      picoflop schrieb:

      .SendWolAsync ... -> TaskAsync (Async CTP)
      Genau daran habe ich auch schon gedacht. Dazu würde ich aber lieber auf das finale .NET 4.5 warten, denn eine CTP produktiv einsetzen finde ich nicht so toll.


      picoflop schrieb:

      oder "normal" Async (Begin_ End_ bzw _Completed?)
      Dazu war ich zu faul. ;)
      Deshalb habe ich es wie (z.B.) im .NET 2.0 WebClient gemacht - nur ohne Events. Diese sollten eigentlich auch noch kommen, aber ich war ehrlich gesagt auch dazu zu faul. ;)
      Ich überlege auch gerade, ob ich die Async-Sachen auch wieder raus nehme udn es den User selber machen lasse. Aber ich glaube vorher nehme ich lieber die Async CTP.
      Von meinem iPhone gesendet

      xtts02 schrieb:

      Eine Funktion, MAC und Rechnername aller im LAN (also im selben Subnet) erreichbaren Rechner aufzulisten
      Da bin ich mir nicht ganz sicher. Vielleicht ne Art MacAddressQuery-Klasse. Das hat allerdings nicht mehr sehr viel mit dem eigentlichen Zweck (WOL) zu tun. Mal sehen.

      xtts02 schrieb:

      und zu speichern
      Wie picoflop schon sagt - das gehört eher in das Hauptprogramm. Die Klassen sind auch alle als serialisierbar gekennzeichnet. Von daher kann der Library Consumer da machen, wozu er Lust hat. ;)
      Woher soll ich (als "Methoden-Bereitsteller") auch wissen, wie der Library-Benutzer das gerne gespeichert haben möchte?
      Von meinem iPhone gesendet

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()

      Das Abspeichern ist zweitrangig. Habe deshalb auch in Klammer gesetzt.
      Und die Scan-Funktion gehört - wie nikeee erwähnt hat - sinnvollerweise in separaten (LAN-Management-) Klasse.
      Meine Gedanken war lediglich der, dass so eine Funktion (bzw. Klasse) im Zusammenhang mit der WakeOnLan sinnvoll und wünschenswert ist.
      Ich hätte gerne ein Feature, mit dem ich vorher die Steckerleiste anmachen kann, an dem der PC hängt.
      To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

      At some point in time, you recognize that knowing more does not necessarily make you more happy.