Автор |
Сообщение |
Shpr0te Гуру |
|
знаю, что тут водятся кодеры, так что вопрос:
нужно сделать так, чтобы по нажатию кнопки на одном компе запускалось приложение на другом. Как это лучше реализовать.
Компьютеры в локальной сети, в одной раб.группе и т.д.
П.С. пишу НЕ вирус... |
|
|
|
|
demarco Продвинутый форумчанин |
|
radmin, teamviewer, и в конце концов удаленный помощник |
|
|
|
|
Shpr0te Гуру |
|
demarco
а не скажете, на каком принципе они работают? (об их существовании знаю, но нужно свое) |
|
|
|
|
Францыч Эксперт |
|
Принцип прост - перехват управления. А дальше уже просто... |
|
|
|
|
AlexRock Гуру |
|
Я думаю, тут надо писать клиент-серверное приложение. Скажем, на удалённом компьютере запущена написанная тобой служба, на которую есть ссылка у твоего клиента. Далее на клиенте просто вызываешь функции службы, среди которых может быть и запуск приложений на удалённом компьютере. Естественно, служба должна иметь соответствующие права на этом удалённом компьютере.
В .NET это можно реализовать на службах WCF и любом клиенте (Console, Forms, WPF), например.
demarco писал(а): |
radmin, teamviewer, и в конце концов удаленный помощник |
По-моему, это примерно то же, что и я написал, только службы за тебя другой дядя пишет. |
|
|
|
|
vin32 Гуру |
|
А так то интересно, у меня есть нетбук, могу ли я им, лежа на диване, управлять компом? |
|
|
|
|
Shining ninja Гуру |
|
vin32 писал(а): |
А так то интересно, у меня есть нетбук, могу ли я им, лежа на диване, управлять компом? |
Да, спокойно. |
|
|
|
|
vin32 Гуру |
|
Shining ninja
А как? На компе вин7 на нетбуке винХР хом |
|
|
|
|
AlexRock Гуру |
|
|
|
|
Shining ninja Гуру |
|
vin32
По ссылочки и там выбери для себя оптимальный вариант.
Я делал через Radmin. Все просто. |
|
|
|
|
Shpr0te Гуру |
|
С запуском вроде разобрался. Теперь другая проблема: нужно к одному серверу подключить несколько клиентов. Пишу это дело на winsock, ожидание подключения - функция accept, но она ждет подключения до бесконечности, а мне нужно, чтоб ждала только секунд 30, как это можно сделать? |
|
|
|
|
AlexRock Гуру |
|
Shpr0te писал(а): |
С запуском вроде разобрался. |
Как сделал? |
|
|
|
|
Shpr0te Гуру |
|
WinExec("c:\\WINDOWS\\system32\\calc.exe",SW_SHOW) |
|
|
|
|
AlexRock Гуру |
|
Это-то понятно. Я имел ввиду, как ты это сделал на другом компьютере? |
|
|
|
|
Shpr0te Гуру |
|
сейчас код уже потерял, но суть в том, что один другому шлет путь вида Ц:\виндовс\систем32\калк.ехе, клиент преобразовывает его в
Ц:\\виндовс\\систем32\\калк.ехе и пихает в эту функцию |
|
|
|
|
Shpr0te Гуру |
|
кстати, будет ли работать WinExec под Win7 и Win Vista? |
|
|
|
|
AlexRock Гуру |
|
Shpr0te писал(а): |
кстати, будет ли работать WinExec под Win7 и Win Vista? |
Я думаю, что будет: http://msdn.microsoft.com/en-us/library/ms687393.aspx . Это ж одна из старинных библиотек.
Shpr0te писал(а): |
сейчас код уже потерял, но суть в том, что один другому шлет путь вида Ц:\виндовс\систем32\калк.ехе, клиент преобразовывает его в
Ц:\\виндовс\\систем32\\калк.ехе и пихает в эту функцию |
Ладно, спрошу совсем конкретно: как взаимодействуют клиент и сервер, на чём они написаны (не столько язык, сколько технология)? Например, сервер на WCF-службе, а клиент - Windows Forms. |
|
|
|
|
Shpr0te Гуру |
|
AlexRock писал(а): |
Ладно, спрошу совсем конкретно: как взаимодействуют клиент и сервер, на чём они написаны (не столько язык, сколько технология)? Например, сервер на WCF-службе, а клиент - Windows Forms. |
Эм. Язык - С++, библиотека WinSock, т.е.:
WSADATA wsaData;
if (WSAStartup(0x202,&wsaData)) {cout<<"Failured start"<<endl;}
else {cout<<"Start ok"<<endl;}
SOCKET s;
s = socket(AF_INET,SOCK_STREAM,0);
if( s==INVALID_SOCKET) cout << "Socket error"<<endl;
else cout << "Create socket OK"<<endl;
sockaddr_in serv_addr;
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(PORT);
serv_addr.sin_addr.s_addr=0;
ну и так далее.
Вероятно я не понял вопроса...
Да, все консольное пока что, Windows Forms не юзал, WCF и прочие упростители жизни -- тоже нет... |
|
|
|
|
Meverik Начинающий |
|
Shpr0te писал(а): |
Теперь другая проблема: нужно к одному серверу подключить несколько клиентов. Пишу это дело на winsock, ожидание подключения - функция accept, но она ждет подключения до бесконечности, а мне нужно, чтоб ждала только секунд 30, как это можно сделать? |
Тут тебе помогут потоки (Thread, в Delphi класс TThread). Ты должен написать поток, который будет обрабатывать клиентские запросы. Этому потоку ты должен передавать клиентское подключение. И написать основной поток, который в основном цикле будет ждать подключение от клиента, при подключении формировать клиентский поток и запускать его на исполнение, после чего ждать следующего клиентского соединения. В основной программе формировать основной поток, запустить его и перейти в ожидание действия от пользователя (нажатие клавиши, ввод какой-либо команды и т.п.)
В итоге у тебя будет стандартное серверное приложение )) |
|
|
|
|
AlexRock Гуру |
|
А почему бы не выполнять все действия пользователя в одном потоке? Почему для каждого клиента свой поток запускать? Если объём обрабатываемой информации мал, то нельзя ли всех клиентов в одном потоке обслуживать? |
|
|
|
|
|
Аватары: Вкл|Выкл ЮзерИнфо: Вкл|Выкл Подписи: Вкл|Выкл
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы
|
|