Реализация удалённого рабочего стола на основе Java AWT, SpringBoot, WebSocket и Canvas для кроссплатформенности
В проекте UDP-протокол имеет серьёзные проблемы с коммуникацией, поэтому его часть была выделена в отдельную ветку, которая всё ещё использует TCP-протокол.
Модульное деление:
Использование:
${rds.access.password}
.mvn package
, используя jar-файлы сервера original-tentacle-server-1.5.9.RELEASE.jar и клиента tentacle-client-1.0-SNAPSHOT.jar.java -jar original-tentacle-server-1.5.9.RELEASE.jar
.java -jar tentacle-client-1.0-SNAPSHOT.jar
и следить за выводом консоли. Если появится сообщение INFO: Connected to server..., это означает успешное подключение к серверу.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
Передача изображения:
Взаимодействие с мышью и клавиатурой: Поскольку браузерные скрипты не могут полностью перехватывать все комбинации клавиш, не все сочетания клавиш могут быть использованы для удалённого контроля, например, ALT+TAB для переключения окон (tentacle отпускает все нажатые клавиши, когда окно теряет фокус).
Примечание: отправка CTRL+ALT+DELETE не работает, возможно, из-за ограничений безопасности используемого класса java.awt.Robot.
Буфер обмена: Из-за политики безопасности браузера прямой доступ к буферу обмена невозможен, предоставляется только интерфейс и функции для работы с буфером обмена удалённого хоста.
TODO:
Руководство по использованию системы:
На платформе Windows фактически есть два рабочих стола: один для обычного использования, называемый workbench desktop, и другой, предназначенный для входа и аутентификации, называемый logon desktop. Когда система находится в состоянии без входа в систему, заблокирована или требует подтверждения UAC, logon desktop становится активным. В этом случае наша программа не может делать скриншоты или отправлять нажатия клавиш. Для решения этой проблемы были протестированы следующие методы:
На данный момент удалённый рабочий стол на платформе Windows является сложной задачей, и работа над проектом приостановлена до тех пор, пока не будет найдено решение. Один из возможных способов — настроить автоматический вход пользователя в системе и отключить опцию «Показывать экран входа при восстановлении» в настройках экрана блокировки. Это позволит использовать систему постоянно.
Linux предоставляет более дружественную среду для расширения и разработки, чем Windows, особенно в отношении входа в систему. При запуске в режиме командной строки или попытке запуска с автозапуском можно столкнуться с ошибкой java.awt.AWTException: headless environment, вызванной отсутствием переменной окружения $DISPLAY, необходимой для java awt для поиска соответствующего рабочего стола и последующего захвата экрана или управления мышью. Чтобы решить эту проблему, выполните следующие действия:
Сотрудничество и поддержка: Есть две области, которые требуют доработки:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )