1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/matrixy-tentacle

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Реализация удалённого рабочего стола на основе Java AWT, SpringBoot, WebSocket и Canvas для кроссплатформенности

В проекте UDP-протокол имеет серьёзные проблемы с коммуникацией, поэтому его часть была выделена в отдельную ветку, которая всё ещё использует TCP-протокол.

Модульное деление:

  1. common — общая библиотека разработки.
  2. tentacle-server — серверная часть, главный вход: cn.org.hentai.server.app.ServerApp.
  3. tentacle-client — клиентская часть для удалённого хоста (контролируемый конец), главный вход: cn.org.hentai.client.app.Tentacle.

Использование:

  1. Изменить настройки проекта, такие как порт прослушивания и пароль для удалённого управления ${rds.access.password}.
  2. Скомпилировать проект с помощью команды mvn package, используя jar-файлы сервера original-tentacle-server-1.5.9.RELEASE.jar и клиента tentacle-client-1.0-SNAPSHOT.jar.
  3. Запустить серверную часть с помощью команды java -jar original-tentacle-server-1.5.9.RELEASE.jar.
  4. На машине, которую нужно контролировать, запустить клиентскую часть с помощью команды java -jar tentacle-client-1.0-SNAPSHOT.jar и следить за выводом консоли. Если появится сообщение INFO: Connected to server..., это означает успешное подключение к серверу.
  5. В браузере ввести http://server_ip:server_port/ и ввести пароль ${rds.access.password} для начала удалённого доступа к рабочему столу.

Протокол передачи данных:

Базовая структура пакета

# Идентификатор протокола
48 45 4E 54 41 49       H E N T A I
01                      команда: сердцебиение
00 00 00 05             Длина пакета 5 байт
48 45 4C 4C 4F          H E L L O

Процесс

Передача изображения:

Сжатие

  1. Кодирование строк, которое значительно уменьшает размер больших областей с одинаковым цветом.
  2. Простой побитовый метод используется для сжатия несерых цветов (RR == GG == BB), что приводит к потере качества, но сохраняет оттенки серого, что незначительно влияет на большинство экранов и значительно улучшает изображение.
  3. Сравнивая два экрана, если цвет в одной и той же позиции одинаковый, сохраняется прозрачный цвет, иначе сохраняется цвет нового экрана. Таким образом, для экранов с небольшими изменениями передаётся только изменённая часть (если экран не меняется, данные не передаются).
  4. Текущая реализация сжатия в JavaScript и Java на бэкенде работает хорошо в Google Chrome и Firefox, время распаковки редко превышает 10 миллисекунд. Планируется дальнейшее улучшение алгоритмов сжатия для более эффективного использования пропускной способности.

Процесс

Взаимодействие с мышью и клавиатурой: Поскольку браузерные скрипты не могут полностью перехватывать все комбинации клавиш, не все сочетания клавиш могут быть использованы для удалённого контроля, например, ALT+TAB для переключения окон (tentacle отпускает все нажатые клавиши, когда окно теряет фокус).

Примечание: отправка CTRL+ALT+DELETE не работает, возможно, из-за ограничений безопасности используемого класса java.awt.Robot.

Буфер обмена: Из-за политики безопасности браузера прямой доступ к буферу обмена невозможен, предоставляется только интерфейс и функции для работы с буфером обмена удалённого хоста.

TODO:

  1. Оптимизация степени сжатия.
  2. Загрузка файлов.
  3. Разблокировка и вход в систему на платформе Windows.

Руководство по использованию системы:

Платформа Windows

На платформе Windows фактически есть два рабочих стола: один для обычного использования, называемый workbench desktop, и другой, предназначенный для входа и аутентификации, называемый logon desktop. Когда система находится в состоянии без входа в систему, заблокирована или требует подтверждения UAC, logon desktop становится активным. В этом случае наша программа не может делать скриншоты или отправлять нажатия клавиш. Для решения этой проблемы были протестированы следующие методы:

  1. Автоматизированный вход и разблокировка через командную строку:
    1. Logon — поддерживает только операционные системы до Windows 7.
    2. Logon Expert — платный сервис, который может выполнять автоматизированный вход и выход из системы.
  2. Mirror Driver — может захватывать экраны заблокированных рабочих столов, но не может захватить поля ввода при входе.
  3. pGina — бесплатный сервис для автоматического входа, но, похоже, имеет неизвестные ограничения или требования для системных пользователей.
  4. Другие инструменты командной строки для захвата экрана — все они оказались неэффективными для захватов экранов заблокированных рабочих столов.

На данный момент удалённый рабочий стол на платформе Windows является сложной задачей, и работа над проектом приостановлена до тех пор, пока не будет найдено решение. Один из возможных способов — настроить автоматический вход пользователя в системе и отключить опцию «Показывать экран входа при восстановлении» в настройках экрана блокировки. Это позволит использовать систему постоянно.

Платформа Linux

Linux предоставляет более дружественную среду для расширения и разработки, чем Windows, особенно в отношении входа в систему. При запуске в режиме командной строки или попытке запуска с автозапуском можно столкнуться с ошибкой java.awt.AWTException: headless environment, вызванной отсутствием переменной окружения $DISPLAY, необходимой для java awt для поиска соответствующего рабочего стола и последующего захвата экрана или управления мышью. Чтобы решить эту проблему, выполните следующие действия:

  1. Определите значение переменной $DISPLAY с помощью команды echo $DISPLAY в терминале. Обычно это :0 или :1.
  2. Установите переменную $DISPLAY с помощью команды export DISPLAY=:0. Вы можете пропустить первый шаг и напрямую использовать :0 или :1.
  3. После этого вы сможете успешно запустить tentacle-client.

Сотрудничество и поддержка: Есть две области, которые требуют доработки:

  1. Вход в систему для пользователей Windows.
  2. Улучшение степени сжатия.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Реализация кроссплатформенного удалённого рабочего стола на основе Java AWT, SpringBoot, websocket и canvas. В настоящее время поддерживается удалённое управление рабочим столом, совместное использование буфера обмена и передача файлов. Развернуть Свернуть
Java и 6 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/matrixy-tentacle.git
git@api.gitlife.ru:oschina-mirror/matrixy-tentacle.git
oschina-mirror
matrixy-tentacle
matrixy-tentacle
tcp