Пробуждение по локальной сети с использованием C # - PullRequest
4 голосов
/ 14 мая 2009

Как лучше всего реализовать Wake on LAN с использованием C #?

Функциональность необходима для машин в среде локальной сети (а не через Интернет). Метод должен быть достаточно надежным, чтобы позаботиться о брандмауэрах и других подобных проблемах. Кроме того, для систем, не поддерживающих эту функцию или отключивших ее, есть альтернатива?

Основная задача - пробуждение машин (из режима выключения / гибернации) по локальной сети - это должно быть запрограммировано с использованием C #.

Пожалуйста, руководство.

PS: я сталкивался со следующим:

  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

Однако я новичок в этом и, следовательно, не могу понять, были ли решения достаточно комплексными. Если бы кто-то мог порекомендовать следовать любой из вышеперечисленных статей, это помогло бы.

1 Ответ

12 голосов
/ 14 мая 2009

Для решения проблемы WOL вам нужно прояснить три проблемы, чтобы заставить его работать:

  1. Отправка WOL через кабель Ethernet
  2. Настройте свой компьютер для прослушивания таких пакет и проснись
  3. Убедитесь, что пакет придет отправитель получателю (межсетевой экран, шлюзы и пр.)

Как вы уже нашли в сети, существует несколько решений для первой проблемы, запрограммированной в C # (и после просмотра ваших ссылок я начну с первой).

Второй вариант - это то, чего вы можете достичь только путем настройки сетевого адаптера. Просто откройте диспетчер устройств и посмотрите на свойства вашего сетевого адаптера, если такая опция существует, и если вы можете включить ее. Это нельзя запрограммировать из-за того, что у каждого сетевого адаптера есть другая реализация этой функции и как она может быть включена.

Третья проблема также не может быть решена с помощью C #. Это чисто сетевая проблема, когда вам необходимо настроить маршрутизатор, шлюзы, ids-системы и т. Д., Чтобы разрешить такой пакет и передать его от отправителя к получателю. Из-за того, что пакет WOL всегда является широковещательным пакетом (dest-ip 255.255.255.255), он не покинет вашу локальную сеть и всегда будет сброшен с маршрутизатора, шлюзов или любого другого моста между сетями (например, vpns, и др.).

И последнее, но не менее важное. Напомню, что первую проблему можно разделить на несколько более мелких пакетов, но, насколько я вижу, все эти проблемы ограничены предоставленными вами ссылками.

...