2009-05-14 16 views
4

Quelle est la meilleure façon d'implémenter Wake on LAN en utilisant C#?Wake on LAN utilisant C#

La fonctionnalité est nécessaire pour les machines dans un environnement LAN (et non sur Internet). La méthode doit être suffisamment robuste pour prendre en charge les pare-feu et autres problèmes de ce type. De même, pour les systèmes ne supportant pas cette fonctionnalité, ou la désactivant, existe-t-il une alternative?

L'objectif principal - réveiller les machines (à partir de l'état d'arrêt/d'hibernation) sur le LAN - ceci doit être programmé en utilisant C#.

S'il vous plaît guider.

PS: Je suis venu à travers les éléments suivants:

  1. http://blog.memos.cz/index.php/team/2008/06/12/wake-on-lan-in-csharp
  2. http://community.bartdesmet.net/blogs/bart/archive/2006/04/02/3858.aspx
  3. http://www.codeproject.com/KB/IP/cswol.aspx

Cependant, je suis nouveau à cela et ne pouvait donc pas comprendre si les solutions étaient assez complètes. Si quelqu'un pouvait recommander de suivre l'un des articles ci-dessus, cela aiderait.

+0

"La méthode doit être suffisamment robuste pour prendre en charge les pare-feu et d'autres problèmes similaires." Qu'est-ce que cela signifie? Vous voulez écrire un programme en C# qui peut passer par n'importe quel pare-feu et réussir à réveiller une machine derrière ce pare-feu? C'est une grosse question ... – Stobor

Répondre

12

Pour le problème de WOL vous devez clarifier trois problèmes pour faire fonctionner:

  1. Envoyer un WOL via le câble Ethernet
  2. Configurez votre PC pour écouter ce un paquet et se réveiller
  3. Assurez-vous que le paquet proviendra de émetteur au récepteur (pare-feu, passerelles, etc.)

Comme vous un Déjà trouvé sur le net il existe plusieurs solutions pour le premier problème programmé en C# (et après avoir écrémé vos liens je commencerais par le premier).

La seconde est quelque chose que vous ne pouvez atteindre qu'en configurant votre carte réseau. Ouvrez simplement le gestionnaire de périphériques et examinez les propriétés de votre carte réseau, si une telle option existe et si vous pouvez l'activer. Cela ne peut pas être programmé, du fait que chaque adaptateur réseau a une autre implémentation de cette fonction et comment elle peut être activée.

Le troisième problème ne peut pas être résolu par C#. C'est un problème réseau pur, où vous devez configurer votre routeur, vos passerelles, vos systèmes d'identification, etc. pour autoriser un tel paquet et le laisser passer de l'expéditeur au destinataire. En raison du fait qu'un paquet WOL est toujours un paquet de diffusion (dest-ip 255.255.255.255) il ne quittera pas votre réseau local et sera toujours abandonné du routeur, des passerelles ou de tout autre pont entre les réseaux (par exemple, vpns, etc.). Last but not least, je vais juste vous rappeler que le premier problème peut être divisé en quelques petits paquets, mais autant que je pouvais voir ces problèmes sont tous plafonnés par les liens que vous avez fournis.

Questions connexes