imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 08.09.2005, 09:05     # 1
3DRaven
Guest
 
Сообщения: n/a

Удаленное включение выключение компа

Хочется написать утилитку которая будет это делать.
Для решения нужен:
1. сервис который будет слушать порт и выключать комп по команде
2. Посыллка пакета на удаленный комп для включения его.

Как писать сервисы я знаю. Но в сетях не рублю. Сразу скажу, что писать хочу сам (не нужны готовые решения). В общем кинте ссылки на примеры или статьи. Нужно описание пакета который надо слать для включения компа. И может есть спец пакет который комп выключает и тогда не придется писать сервис. Нужна также инфа о том каким способом эти пакеты слать. Заранее спасибо.
 
Старый 08.09.2005, 11:27     # 2
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
Если айпи известен и постоянен - тогда все тривиально - открывается сокет и в него потоком вливаются данные... если нет - то тут все несколько сложнее... Кстати а зачем это нужно? есть такая штука как ремоут сервис - удаленный рабочий стол, чтоли... вроде так называется...
Это что касается выключения... а вот включения - это уже другой вопрос... В принципе опять же если айпишник известен можно попробовать в биосе выставить включение по ЛАН... но, если честно, ни разу не пробовал
__________________
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
/7y3uK вне форума  
Старый 08.09.2005, 20:24     # 3
Larry
Member
 
Аватар для Larry
 
Регистрация: 18.07.2005
Пол: Male
Сообщения: 232

Larry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форуме
3DRaven, на чем кодить хотите? Есть пример под Delphi. А вообще - все достаточно тривиально. Команды для выключения храним прямо в сервере (использовать можно API-функции), клиентом передаем серверу какое-либо зарезирвированное сообщение (можно даже любую букву), после получения которого сервер автоматически вызывает api, выключающую компьютер.
Larry вне форума  
Старый 08.09.2005, 20:35     # 4
kot_
Junior Member
 
Аватар для kot_
 
Регистрация: 19.11.2004
Адрес: Dnepropetrovsk
Пол: Male
Сообщения: 67

kot_ Путь к славе только начался
Цитата:
Сообщение от 3DRaven
Хочется написать утилитку которая будет это делать.
Для решения нужен:
1. сервис который будет слушать порт и выключать комп по команде
2. Посыллка пакета на удаленный комп для включения его.

Как писать сервисы я знаю. Но в сетях не рублю. Сразу скажу, что писать хочу сам (не нужны готовые решения). В общем кинте ссылки на примеры или статьи. Нужно описание пакета который надо слать для включения компа. И может есть спец пакет который комп выключает и тогда не придется писать сервис. Нужна также инфа о том каким способом эти пакеты слать. Заранее спасибо.
Вопрос первый - какая среда разработки(и какая среда выполнения). Предполагается работа с сокетом напрямую или все же допустимо использование стандартных классов среды разработки? Преимущество первого - продолжение недостатков второго. Но если никогда не работал - лучше все же начать со стандартных классов.
Специальных пакетов не существует - нужно будет обрабатывать полученную инфу на клиенте и от результатов обработки выполнять действие.
Кроме сокетов для этих целей можно приспособить DCOM.
А для включения по сети - необходимо что бы машина была не выключена а находилась в состоянии саспенд - и в биосе должна быть возможность разбудить ее по сигналу с прерывания сетевой. Вобщем гугл - сокет, socket, RPC DCOM. пример работы с сокетами можно найти во МСДН
__________________
kot_ вне форума  
Старый 09.09.2005, 07:42     # 5
3DRaven
Guest
 
Сообщения: n/a

Если не трудно кинте пример...хоть на делфи. Почта 3DRaven@omgtu.ru Писать буду на С++ в MSVS. Пишется все для стандартных компов. Утилитка нужна для удобства в работе. Есть Unix утилиты которые это делают, вот в винде их нет...только выключение. Всем спасибо.
 
Старый 12.09.2005, 16:03     # 6
VanHelsing
Junior Member
 
Аватар для VanHelsing
 
Регистрация: 18.04.2005
Сообщения: 157

VanHelsing Реально крут(а)VanHelsing Реально крут(а)VanHelsing Реально крут(а)VanHelsing Реально крут(а)
3DRaven, если тебе интерес не накодить, а включить, тогда wakeup программка называется. в стендбае компу совсем не надо быть. надо что бы он был подключен к сети (т.е. питание не выключино из розетки), и мать поддерживала WON (wake on lan). в отдельных случаях в сетевуху надо кабелечек к матерешечке (в старых). прога wakeup посылает спец.пакет.
LarryBF, ты поделился программулиной хорошей. если уж тут тема про включение - выключение, хочу вопрос по теме. исходя из твоей программулины, я предположил, что пишешь ты на асме. я только изучать его начинаю, а вопрос назрел уже сейчас. исходник бы какого-нибудь маленького кодика (ком или екзе) для выключения компа. т.е. когда екзешник запустил, винда выключила ось, но по правильному, а не просто биос вырубил питание (но и такую было бы хорошо).
зы: заранее благодарен
__________________

Последний раз редактировалось Vanhelsing; 12.09.2005 в 16:35.
VanHelsing вне форума  
Старый 12.09.2005, 18:01     # 7
Larry
Member
 
Аватар для Larry
 
Регистрация: 18.07.2005
Пол: Male
Сообщения: 232

Larry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форуме
Lightbulb

Vanhelsing, не пишу я пока на ассемблере. А программулина просто была на диске. Изврат - писать подобную утилиту на ассемблере. Есть же API-функция, читайте Windows SDK:

Цитата:
BOOL ExitWindowsEx(

UINT uFlags, // shutdown operation
DWORD dwReserved // reserved
);


Parameters

uFlags

Specifies the type of shutdown. This parameter must be some combination of the following values:

Value Meaning

EWX_FORCE Forces processes to terminate. When this flag is set, Windows does not send the messages WM_QUERYENDSESSION and WM_ENDSESSION to the applications currently running in the system. This can cause the applications to lose data. Therefore, you should only use this flag in an emergency.

EWX_LOGOFF Shuts down all processes running in the security context of the process that called the ExitWindowsEx function. Then it logs the user off.

EWX_POWEROFF Shuts down the system and turns off the power. The system must support the power-off feature.Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.

EWX_REBOOT Shuts down the system and then restarts the system. Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.

EWX_SHUTDOWN Shuts down the system to a point at which it is safe to turn off the power. All file buffers have been flushed to disk, and all running processes have stopped. Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.
То есть для нормального выключения Windows достаточно вставить следующий код: ExitWindowsEx (EWX_SHUTDOWN, 0). Как принять и обработать команду для выключения - это уже зависит от технических возможностей и предпочтений программиста. Для того, чтобы программно можно было вывести компьютер из ждущего режима, достаточно войти в свойства сетевой карты -- "Управление электропитанием" и поставить галочку "Разрешить устройству вывод компьютера из ждущего режима". Ну и программой посылать какой-либо пакет сетевой карте...
Larry вне форума  
Старый 13.09.2005, 10:48     # 8
VanHelsing
Junior Member
 
Аватар для VanHelsing
 
Регистрация: 18.04.2005
Сообщения: 157

VanHelsing Реально крут(а)VanHelsing Реально крут(а)VanHelsing Реально крут(а)VanHelsing Реально крут(а)
LarryBF, и на С++ тоже что ли? так ты на С пишешь? на самом деле пытаюсь плавным переходом от PHP -> VB -> C++ -> Assembler изучать. ищу умных людей. раньше, когда еще работал на ZX80, была пара знакомых хороших, один программил, другой учился программить и крекать. и я туда же. а когда перешел на архитектуру x86 офигел от разнообразия регистров etc., литературы такой, как для синклера вообще найти не могу. в общем, тяжело мне жить на x86, приходиться админить
__________________
VanHelsing вне форума  
Старый 13.09.2005, 17:33     # 9
Larry
Member
 
Аватар для Larry
 
Регистрация: 18.07.2005
Пол: Male
Сообщения: 232

Larry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форумеLarry Популярный человек на этом форуме
API-функции применяются в любой среде программирования.
Larry вне форума  
Старый 14.09.2005, 06:47     # 10
VanHelsing
Junior Member
 
Аватар для VanHelsing
 
Регистрация: 18.04.2005
Сообщения: 157

VanHelsing Реально крут(а)VanHelsing Реально крут(а)VanHelsing Реально крут(а)VanHelsing Реально крут(а)
приведенный тобой текст из каких доков? буду рад их почитать
__________________
VanHelsing вне форума  
Старый 15.09.2005, 05:34     # 11
3DRaven
Guest
 
Сообщения: n/a

Написал уже утилитку...интерес был именно накодить. В общем объясняю обществу :) Ассемблер сдесь не нужен. Создаете сокет, который работает с UDP. Потом шлете спец пакет на 40000 порт (сработало только на нем).
Пакет : 0xFF (6 раз) потом 16 раз MAC машины которую включить хочеш. При посылке слать всем (IP 255.255.255.255 и/или BROADCAST). Вот и вся премудрость. Может быть и выложу для обозрения через недельку. Щас надо написать сервис который будет слушать порт и при приходе команды выключать комп (ужде написал слушателя ща надо просто интерфейс гуевый сделать надо и загрузку данных из конфига). В результате в конце утилитка будет включать и выключать комп по сети и в отличае от многих будет удобной.
 
Старый 22.09.2005, 05:09     # 12
3DRaven
Guest
 
Сообщения: n/a

Выложил: Socket1.rar смотрите кому надо...там класс сокета голый...сами разберетесь...все просто.
 
Старый 01.10.2005, 14:30     # 13
VENOMOUS SNAKE
Guest
 
Сообщения: n/a

Извините, я здесь проездом. Но стоит подумать о консольной команде "net start" в WinXP. Она запускает/останавливает службы по сети. Что ещё она умеет я точно не знаю, не заморачивался. Это вам просто пища для размышления.
 
Старый 04.10.2005, 00:30     # 14
grinkevitch
Newbie
 
Регистрация: 18.08.2003
Сообщения: 22

grinkevitch Путь к славе только начался
как-то подозрительно мало где будет такое работать. потому что все левые порты файер просто не пропустит. а если есть административный доступ к компам, то можно и вообще ничего не писать. даже готовые утилитки были на sysinternals, кажется
grinkevitch вне форума  
Старый 17.12.2005, 00:02     # 15
Willow
Junior Member
 
Регистрация: 23.12.2003
Адрес: Киев
Сообщения: 118

Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)
А можно перевыложить Socket1.rar, а то такая же самая проблема. А сети разбираться нету - надо принести и чтобы работало сразу.
Willow вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 20:15.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.