Здравствуйте. Я только недавно заинтересовался сокетами и сетью в целом, поэтому и вопросты такие.
В общем интересует формат пакета который надо слать для удаленного ВКЛЮЧЕНИЯ машины...и еще кое что :)
Исходные данные:
Есть:
1. IP удаленной машины
2. MAC удаленной машины
3. номер порта любой
Сразу скажу, обе машины лично мои и проблем с доступом и прочих, нет.
Шлём спец пакет для удаленного включения.
1. в пакете первые 0хFF 6 штук, потом MAC машины 16 раз. Я прав ?
2. Пакет посылать по UDP на любой порт (я шлю на 135, может есть предопределенный ?). Прав или нет ?
3. Пользуюсь сокетами :)
4. пакет это массив char.
Еще вопрос: чем отличается посылка
1. bind() -> send()
от
2. sendto().
3. при работе с UDP, connect() не нужен. Да ?
4. что такое BROADCAST, это есть в настройке опций сокета...я тупо содрал строку из чюжого кода и не знаю что она делает...не смотрел МСДН еще,
что то вроде int one=1;setopt(socket,ST_?????,??_BROADCAST,(char*)&one,sizeof(one)), в местах с вопросами просто не помню на память, что там пишется.
И может UDP протокол требует особого к себе отношения ?
При включенной машине снифер показывает, что пришел пакет с инфой (в том формате который я описывал выше).
Я шлю пакеты с помощью sendto(), при этом машина не включается.
WoL машина держит проверял другими аналогичными утилитами.
Код в моей утилитке похож на них, но не работает :)
Подскажите, может я чего то не делаю или делаю не так.
К слову сказать пишу на С++ и под винды. У меня есть исходники такой утилиты под юникс, может отличия кроются в этом ?