Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Wake-on-LAN (http://forum.oszone.net/showthread.php?t=29636)

Guest 23-06-2004 13:40 205062

Здравствуйте!

Мне нужно из программы включить удаленно комп. На том компе Wake-on-LAN присутствует, проблема в том, как через API-вызовы (или еще как) послать сигнал компу включиться. Пробовал искать в MSDN - максимум, что нашел, это то, что нужно тому компу послать Magic Packet, но что это такое и как его послать...

И еще: чтобы комп включился по Wake-on-LAN он может быть выключен (Soft-Off) или нужно, чтобы он был в Suspend'е ?

Vlad Drakula 23-06-2004 21:12 205063

Guest
для того чтобы комп включился нужно чтобы его материнка и сетевуха были под напряжением (комп может быть выключен)

что бы разбудить комп в биусе должна стоять галка "Wake-on-LAN"

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

но сетевуха должна это поддерживать!

Dread Knight 24-06-2004 00:27 205064

Еще раз привет, если что - 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 205065

Dread Knight
тебе нужна не "ndis.h" а "Ntddndis.h"

hasherfrog 24-06-2004 09:17 205066

Dread Knight
Думаю, сначала стоит решить несколько теоритических вопросов и сделать несколько ламерских попыток прояснить ситуацию "вручную", У Вас есть машина (точнее, две + LAN), на которой Вы могли бы опробовать пробуждения? Если да, я предлагаю проверить:
1. Если пингануть "спящую" машину, она проснётся?
2. Что вообще необходимо/достаточно сделать на второй машине, чтобы проснулась "спящая".
Если знать хотя бы такие мелочи, можно решить вопрос бвстрее. Дело в том, что я лично никогда этим не пользуюсь, потому что:
1. Непатченные и ранние версии виндов вообще плохо "просыпаются". Да, я помню, что Вам надо включиться, а не проснутся, но если машина не выключилась, а "уснула", то будет как раз этот вариант.
2. Вытекает из первого пункта. По умолчания установка сетевой карты ключает режим "отключать сетевую карту для экономии". Имхо, это как-то может наложится на Wake-on-LAN.
ПС. Возможно, это дилетантские размышления, но... Мне же теперь тоже интересно, что это за Маджик-пакет :)

Добавлено:

ППС. Немного путанно вышло с терминами "спящая". В одном случае имеется в виду "в гибернации", в другом - "отключенная". Надеюсь, Вы поймёте.

CyberDaemon 24-06-2004 10:39 205067

Цитата:

И все так же неясно с Magic Packet
Дык есть же Гугль! Сылок вываливает - море. В первой же пятерке ссылок даже какую-то DLL найти можно.

hasherfrog 24-06-2004 11:01 205068

Да, правду говорят: "Вера - это когда лень проверить". Я-то действительно решил, что инфу сложно найти...

Dread Knight 24-06-2004 15:31 205069

Vlad Drakula
проверю, но не думаю, что мне это действительно нужно, почему - см. ниже

CyberDaemon
про гугль я и сам вспомнил, только вот Magic Packet поискать там как-то не додумался... :gigi:
правда, ответа на свой вопрос я пока так и не нашел - либа это хорошо, но мне интересно, как оно работает.

кстати, нашел я и прогу, которая включает мой комп по сети, и с ней все заработало как надо. Но хотелось бы узнать, как именно.
Судя по ее импортам, она юзает сокеты, вот только как? Не то чтобы я совсем ламер, просто с сокетами я работал мало, и как с их помощью послать ровно 1 определнный пакет на определенный MAC- (а не IP-) адрес, представляю не смутно, а очень смутно (то есть не представляю совсем)

hasherfrog
Цитата:

Я-то действительно решил, что инфу сложно найти...
не, ну, я-то искал, просто не там, и не то :gigi:

в общем, будем искать :) только не сейчас, а вечером.
но если кто чего может сказать сразу - скажу спасибо за сэкономленное мне время

Guest 25-06-2004 16:51 205070

как было сказано выше ... ты попробовал 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 205071

По поводу данных Guest ссылок.
Пример wol.c делает броадкастовый посыл пакета, что не совсем корректно. Кроме того, емнип, я по гуглевым ссылкам, выдаваемых на запрос, приведённый CyberDaemon, видел (ещё раз емнип) содержимое маджик-пакета. В wol.c его нет.
Что касается программирования под winsock. Нужен обязательно 2.0, т.к. "сырые сокеты" поддерживаются только там.


Время: 06:11.

Время: 06:11.
© OSzone.net 2001-