Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Написание remote-desktop программы. С чего начать? Используемые компоненты. Примеры кода. 
:(
    Опции темы
malor
  Дата 8.6.2011, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 632
Регистрация: 17.11.2006

Репутация: нет
Всего: нет



[A]
Какие компоненты понадобятся? 
Просматривая темы форума можно найти совет использовать 
1) TIdTCPClient/TIdTCPServer.
2) TClientSocket/TServerSocket

Какой вариант правильней? Вообще, с клиентской части понадобится управлять тем, что происходит на удаленной машине.
Про сокеты такой материал нашел в сети:
Создание сетевого приложения – работа с сокетами

Про использование TIdTCPClient/TIdTCPServer следующий:
Просмотр экрана компьютера с удаленный соединением
В ветке люди обсуждают создание программы, позволяющей просмотр удаленного рабочего стола, без активного участия просматривающего.

[B]
На серверной стороне должно производится формирование скриншотов с определенной периодичностью, для отсылки. Тут я сам выбираю интервал в долях секунды и вставляю его в код ServerSocket/TIdTCPServer? 

[C]
Вопрос передачи трафика большого объема пока отложим на самый конец. Возможно TightVNC будет необходимо изучать. Пока основную бы функциональность реализовать.

Какие еще важные шаги пропустил?
Если есть наработки, то прошу поделиться.


Это сообщение отредактировал(а) malor - 8.6.2011, 17:32
PM MAIL   Вверх
Snowy
Дата 8.6.2011, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



[ A ]
на твой вкус. Я бы выбрал 1-й вариант - для меня он удобнее.
Есть еще варианты 3, 4, ..., N. Годится практически любой.
Вполне нормальный и вариант TClientSocket/TIdTCPServer.
Выбирай что тебе удобней и понятней.

[ B ]
Готового такого функционала нет.
Ты сам должен организовать промежутки между отправками.
Можно банально воткнуть sleep, либо вручную считать GetTickCount, чтобы получить более точные промежутки.
Sleep снизит нагрузку на систему, но не будет учитывать время на создание шотов, сжатие и отправку по сети, что будет давать разные интервалы на разных по мощности машинах.
Считать тики вручную - получишь более ровные интервалы, но выше нагрузку на систему.

[ C ]
Сделай основной блок, потом оптимизируй.
Например, необязательно слать полные скрины. Достаточно только ту часть, которая изменилась.

Что касается remote-desktop, то RDP устроен по другому принципу.
PM MAIL   Вверх
kami
Дата 9.6.2011, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 6
Всего: 72



[ A ]
Каждый кулик свое болото хвалит.
Я за TClient|TServerSocket - "мне с ними сухо и комфортно" smile

[ B ]
Если вопрос сокращения трафика откладываем в сторону (правильная мысль - посмотреть исходники VNC), то крайне желательно сделать передачу "скриншотов" через "обратную связь". Поясню:
каждому "скриншоту" при передаче присваивается идентификатор, после чего он отправляется клиенту.
Клиент, обработав "скриншот", отправляет идентификатор обратно.
Сервер получает идентификатор и вычисляет "а сколько же скриншотов сейчас висит между клиентом и сервером", т.е. сколько их уже сформировано и отправляется/ждет отправки. Если количество больше некоего критического (определять или опытным путем, или динамически), то формирование очередного скриншота нужно отложить, иначе - можно отправлять.
Если этого (или подобного, например - все вычисления "буферизации" проводить непосредственно на сервере) не сделать, то вполне возможна ситуация, которая была у меня в первых попытках реализации (передавал полный скриншот экрана) - на клиенте отображается всё великолепно, но - в замедленном темпе. И чем дальше - тем больше отставание. Попутно это приводило к увеличению потребления памяти на сервере и вылету через OutOfMemory. Приемлимый вариант (правда, будут заметны рывки) - пока не ушел полностью один скриншот, второй не начинать формировать.
PM MAIL WWW   Вверх
malor
  Дата 12.6.2011, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 632
Регистрация: 17.11.2006

Репутация: нет
Всего: нет



[ D ]
На клиентской машине отображается картинка удаленного рабочего стола в окошке произвольного размера, такого какого пользователь установит.
Допустим я кликаю в точку (100, 100) клиентской области в которую подгружено изображение стола.
Передаем серверной части, что произошёл удар мышью в определенной точке. По какому алгоритму  координаты точки на экране удаленной машины вычислять лучше?
Под рукой нет второго компа, чтоб под отладкой посмотреть механизм TightVNC. А запуск всего на одной машине приводит к эффекту "каскадных окон".
PM MAIL   Вверх
Akella
Дата 16.6.2011, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Может лучше взять готовый проект с исходниками, например ChunckVNC? Но там, наверняка на сях.
PM MAIL   Вверх
kami
Дата 16.6.2011, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 6
Всего: 72



Цитата(malor @  12.6.2011,  17:22 Найти цитируемый пост)
Передаем серверной части, что произошёл удар мышью в определенной точке. По какому алгоритму  координаты точки на экране удаленной машины вычислять лучше?

Если Вы воспользуетесь для воспроизведения удара мышкой mouse_event или SendInput тогда так: обе они воспринимают "нормализованные" координаты мыши - от 0(лево или верх экрана) до 65535(право или низ экрана), вне зависимости от действительного разрешения.
Посему - функция "преобразования" будет выглядеть так:
Код

procedure T_____.TranslatePoint(var Point: TPoint);
begin
  Point.x := (65535 * Point.x) div Image1.Width;
  Point.y := (65535 * Point.y) div Image1.Height;
end;

где Image1 - TImage, на котором рисуется изображение удаленного компьютера.
Исходный Point - координаты клика на Image1.

Добавлено через 6 минут и 4 секунды
Кстати, передавать нужно не только клики мышью (в том числе - дополнительных клавиш мыши), но и прокрутку колеса, и движение мыши. Наглядный пример - перемещение курсора по контекстному меню, где идет 1 клик правой кнопкой для вызова меню, а потом - только перемещение курсора (включая вложенные меню) до нахождения нужного пункта.

Это сообщение отредактировал(а) kami - 16.6.2011, 23:58
PM MAIL WWW   Вверх
Akella
Дата 17.6.2011, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Не забывайте про кодировки. Потому как в некоторых программах невозможно удалённо печатать текст на русском языке
PM MAIL   Вверх
yogin
Дата 4.7.2011, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 23.12.2007

Репутация: нет
Всего: нет



Я писал свой удалённый администратор столов.

Вот что могу сказать:
1) использовал исключительно WinSockApi(для скорости). Формировал свои пакеты, чтобы была боле-мене оптимальная передача
2) использовал библиотеку ijl.dll(Intel JPEG Library) для быстрой скорости обработки графики(скриншот+его расчленение).

Вообщем внешне механика получилась как у радмина, но конечно скорость поменьше чутка, 
но на скорости 256 кб/с можно было печатать и т.п.

Ещё стоит упомянуть, что я писал трёхзвенную архитектуру (клиент-клиент) - (сервер) - (админ-клиент), 
где админ может управлять каким-либо клиентом в сети, а пакеты проходят через сервер.
PM MAIL   Вверх
Akella
Дата 12.7.2011, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



Сейчас очень актуально использовать серверы типа IP-To-ID, типа как TeamViewer или ChunkVNC smile, что можно было к клиенту подключится минуя НАТ и сетевой экран.
PM MAIL   Вверх
Vitaly79
Дата 16.7.2011, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 16.7.2011

Репутация: нет
Всего: нет



Удаленный доступ к вебкамере компьютера
Здраствуйте Мне нужна помощь  А точнее программа для удаленного доступа к вебкамере(аудио-видео) Шпионская скрытая программа которая не палится антивирусами....если можно помогите!
А также PHP скрипт для отправки анонимной почты на несколько адресов с вложением  
Связь со мной: [email protected]
PM MAIL   Вверх
kami
Дата 16.7.2011, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 6
Всего: 72



Цитата(Vitaly79 @  16.7.2011,  15:28 Найти цитируемый пост)
если можно помогите

не можно.
PM MAIL WWW   Вверх
Anakin
Дата 27.9.2011, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 25.9.2006

Репутация: нет
Всего: нет



Вот если кому понадобится исходники программы типа РАдмин.
Внутри есть папка с необходимыми компонентами.
Исходник не мой давным давно где то скачал его.

Присоединённый файл ( Кол-во скачиваний: 417 )
Присоединённый файл  Remote.zip 723,97 Kb
PM MAIL   Вверх
kami
Дата 28.9.2011, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 6
Всего: 72



Цитата(Anakin @  27.9.2011,  14:27 Найти цитируемый пост)
Исходник не мой давным давно где то скачал его.

Это мой исходник smile Одна из первых реализаций smile 
PM MAIL WWW   Вверх
Anakin
Дата 28.9.2011, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 25.9.2006

Репутация: нет
Всего: нет



))) Чесно не помню где достал его, это правдо было очень давно
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.