Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Просмотреть что творится на экране клиента


Автор: km999 18.3.2011, 00:39
Всем привет! Необходимо через клиент просматривать что творится на мониторе клиентского компьютера. Как такое можно реализовать? Использую Indy.

Спасибо.

Автор: Mach3 18.3.2011, 06:53
Может так?!
Написать серверное приложение, которое будет каждый промежуток времени делать снимок экрана (аля PrintScr) и отсылать его клиенту.
Для передачи можно использовать IndyFTP
Думаю, это самый простой и быстрый вариант.

Автор: km999 18.3.2011, 09:37
Через IndyTCP нельзя? С какой частотой можно будет отправлять снимки, если клиентов, скажем 10?

Автор: Mach3 18.3.2011, 10:17
можно (но кода будет наамного больше). TCP- протокол транспортного уровня, а FTP- прикладного. Поэтому, думаю намного быстрее будет реализовать с помощью IndyFTP.
С какой частой? черт его знает. Все зависит от "ширины" канала и качества (соответсвенно размера) картинок.
Узнаешь опытным путем.. =)) как говортся, научным методом тыка.. 

Автор: km999 18.3.2011, 12:27
Еще вопрос, если я хочу получить контроль над клиентом на сервере, то какаие компоненты Indy необходимо использовать? Telnet подойдет? Сразу скажу, что я не трояна пишу =)

Автор: MetalFan 18.3.2011, 12:56
хм... скриншотами тут не обойдешься. Поищите по форуму, кто-то тут уже собирался писать аналог RAdmin'а. Что-то там речь была про shadowed driver (если название не путаю), т.е. драйвер, перехватывающий вывод на экран. + хитрый алгоритм сжатия.
а передача данных по сетке - дело десятое. Хоть idTCPClient/idTCPServer, хоть чисто на сокетах...

Автор: salik 18.3.2011, 13:59
km999 если надумаете писать драйвер, то мне эта тема тоже интересна!

Что касаемо скорости передачи, то сделаю отпишусь. Узкое место на мой взгляд будет - это компьютер с которого посылаются снимки экрана, т.к. картинку надо сжимать в формат jpeg (у вас может быть свой). На мой взгляд современные компьютеры легко справятся с этой задачей за считанные доли секунд.

Автор: kami 18.3.2011, 16:39
Цитата(MetalFan @  18.3.2011,  12:56 Найти цитируемый пост)
shadowed driver

mirror driver
Правда, есть у него минуса - при задействовании сразу отключается aero, оверлеи (то есть просмотр видео будет хорошо занимать процессор) и так далее.

Вообще, при работе с удаленной машиной говорить о "частоте кадров" несколько неправильно, потому что снимок экрана в bmp занимает много места (будет долго передаваться по сети), а перекодирование его в jpg - много процессорного времени. Посему программы подобного направления действуют несколько хитрее: первый снимок экрана передается полностью (с использованием всяческих ухищрений по сокращению трафика), а потом - только те участки экрана, которые изменились. Методы обнаружения изменившихся участков экрана у всех различаются (это одно из основных know-how каждой программы удаленного администрирования).
Я бы посоветовал обратить внимание на  исходники VNC.
Цитата(km999 @  18.3.2011,  12:27 Найти цитируемый пост)
если я хочу получить контроль над клиентом на сервере, то какаие компоненты Indy необходимо использовать?

А какая разница? Компоненты Indy, как и любые другие сетевые компоненты будут выступать только сетевой основой. Они смогут передать/принять что-либо по сети. А вот что с этим "что-либо" делать - должен решить уже Ваш код.
Определите сначала, что Вы понимаете под "контроль над клиентом на сервере".

Автор: MetalFan 18.3.2011, 16:57
kami, спасибо за поправку)

Автор: km999 18.3.2011, 17:29
Цитата(kami @ 18.3.2011,  16:39)
Определите сначала, что Вы понимаете под "контроль над клиентом на сервере".

С этим уже решил вопрос.

Добавлено @ 17:31
Цитата(salik @ 18.3.2011,  13:59)
km999 если надумаете писать драйвер, то мне эта тема тоже интересна!

Драйвер писать вряд ли буду, пока поищу исходники. В крайнем случае сделаю передачу скриншотов через большие промежутки времени - 10-15 сек. Если найду что, отпишусь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)