Показать полную графическую версию : Wake-on-LAN
Здравствуйте!
Мне нужно из программы включить удаленно комп. На том компе Wake-on-LAN присутствует, проблема в том, как через API-вызовы (или еще как) послать сигнал компу включиться. Пробовал искать в MSDN - максимум, что нашел, это то, что нужно тому компу послать Magic Packet, но что это такое и как его послать...
И еще: чтобы комп включился по Wake-on-LAN он может быть выключен (Soft-Off) или нужно, чтобы он был в Suspend'е ?
Vlad Drakula
23-06-2004, 21:12
Guest
для того чтобы комп включился нужно чтобы его материнка и сетевуха были под напряжением (комп может быть выключен)
что бы разбудить комп в биусе должна стоять галка "Wake-on-LAN"
потом по сети нужно послать этому компу пакет данных, тогда сетевуха даст сигнал и комп начнет загружаться.
но сетевуха должна это поддерживать!
Dread Knight
24-06-2004, 00:27
Еще раз привет, если что - Guest это был я.
Поясню еще раз, чтобы советов с бухты барахты a-la Vlad Drakula (надеюсь, без обид?) больше не поступало.
Материнка и сетевуха под напряжением (на свитче лампочки светятся), в биосе стоит галка, сетевуха WOL, ессесно, поддерживает (а в добавок и boot from lan, но суть не в этом).
Я все это знаю, и трабла моя не в этом. Вопрос ведь звучит не "почему у меня WOL не работает". Вопрос стоит так: какую(ие) функцию и из какой DLL нужно заюзать чтобы послать пакет по сети (я так понимаю, не по IP или имени компа, а по MAC адресу сетевухи), и что именно это должен быть за пакет, т.е. нужно либо название функции, либо (еще лучше), кусок кода, выполняющий данное действие.
На данный момент я сумел найти только функции Ndis<чего-нибудь>, но во-первых для них мне нужен ndis.h, которого я что-то не нашел у себя, и во-вторых, судя по кое-чему из их описания, заюзать их можно только в режиме ядра, а значит из драйвера. Но драйвер писать как-то неохота, да и не нужны мне такие сложности. Может, есть еще что-нить?
И все так же неясно с Magic Packet.
Vlad Drakula
24-06-2004, 01:47
Dread Knight
тебе нужна не "ndis.h" а "Ntddndis.h"
hasherfrog
24-06-2004, 09:17
Dread Knight
Думаю, сначала стоит решить несколько теоритических вопросов и сделать несколько ламерских попыток прояснить ситуацию "вручную", У Вас есть машина (точнее, две + LAN), на которой Вы могли бы опробовать пробуждения? Если да, я предлагаю проверить:
1. Если пингануть "спящую" машину, она проснётся?
2. Что вообще необходимо/достаточно сделать на второй машине, чтобы проснулась "спящая".
Если знать хотя бы такие мелочи, можно решить вопрос бвстрее. Дело в том, что я лично никогда этим не пользуюсь, потому что:
1. Непатченные и ранние версии виндов вообще плохо "просыпаются". Да, я помню, что Вам надо включиться, а не проснутся, но если машина не выключилась, а "уснула", то будет как раз этот вариант.
2. Вытекает из первого пункта. По умолчания установка сетевой карты ключает режим "отключать сетевую карту для экономии". Имхо, это как-то может наложится на Wake-on-LAN.
ПС. Возможно, это дилетантские размышления, но... Мне же теперь тоже интересно, что это за Маджик-пакет :)
Добавлено:
ППС. Немного путанно вышло с терминами "спящая". В одном случае имеется в виду "в гибернации", в другом - "отключенная". Надеюсь, Вы поймёте.
CyberDaemon
24-06-2004, 10:39
И все так же неясно с Magic Packet
Дык есть же Гугль (http://www.google.ru/search?q=Magic%20packet)! Сылок вываливает - море. В первой же пятерке ссылок даже какую-то DLL (http://www.sevillaonline.com/ActiveX/ARMagicPacketLib.htm) найти можно.
hasherfrog
24-06-2004, 11:01
Да, правду говорят: "Вера - это когда лень проверить". Я-то действительно решил, что инфу сложно найти...
Dread Knight
24-06-2004, 15:31
Vlad Drakula
проверю, но не думаю, что мне это действительно нужно, почему - см. ниже
CyberDaemon
про гугль я и сам вспомнил, только вот Magic Packet поискать там как-то не додумался... :gigi:
правда, ответа на свой вопрос я пока так и не нашел - либа это хорошо, но мне интересно, как оно работает.
кстати, нашел я и прогу, которая включает мой комп по сети, и с ней все заработало как надо. Но хотелось бы узнать, как именно.
Судя по ее импортам, она юзает сокеты, вот только как? Не то чтобы я совсем ламер, просто с сокетами я работал мало, и как с их помощью послать ровно 1 определнный пакет на определенный MAC- (а не IP-) адрес, представляю не смутно, а очень смутно (то есть не представляю совсем)
hasherfrog
Я-то действительно решил, что инфу сложно найти...
не, ну, я-то искал, просто не там, и не то :gigi:
в общем, будем искать :) только не сейчас, а вечером.
но если кто чего может сказать сразу - скажу спасибо за сэкономленное мне время
как было сказано выше ... ты попробовал Google ?!?!
вот тебе несколько из результатов по поиску "WOL ethernet packet format":
http://www.matcode.com/wol.htm
- это конзольная програмка
http://ahh.sourceforge.net/wol/wol.html#SEC4
- описание magic packet-а
http://markh.de/software/wol.c
- прогромный код... написан для Linux но очень просто доработавыется до Win.
hasherfrog
26-06-2004, 11:10
По поводу данных Guest ссылок.
Пример wol.c делает броадкастовый посыл пакета, что не совсем корректно. Кроме того, емнип, я по гуглевым ссылкам, выдаваемых на запрос, приведённый CyberDaemon, видел (ещё раз емнип) содержимое маджик-пакета. В wol.c его нет.
Что касается программирования под winsock. Нужен обязательно 2.0, т.к. "сырые сокеты" поддерживаются только там.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.