Использование RFB или RDP для одного приложения с графическим интерфейсом
Я хотел бы иметь возможность создавать графический интерфейс, который можно просматривать по сети с помощью удаленного клиента.
Одним из подходов является кодирование всего графического интерфейса в HTML5 и запуск его с сервера, такого как Apache; главная трудность заключается в том, что графический интерфейс пользователя включает в себя, по крайней мере, одно, иногда два, окна, содержащие живые видеопотоки (без звука), и, как представляется, не существует хорошего способа для потоковой передачи живого видео в HTML5 - особенно когда это действительно необходимо быть живым; задержка в несколько секунд была бы недопустимой.
Другой подход (который я уже сделал и на самом деле работает довольно хорошо) - просто кодировать графический интерфейс пользователя как приложение для настольного компьютера (например, с помощью Qt), а затем удаленно просматривать рабочий стол с помощью VNC или Windows Remote Desktop. Это обеспечивает необходимую скорость отклика и отсутствие задержек, но имеет тот недостаток, что доступен весь рабочий стол ОС, а не только одно мое приложение.
Итак, вот мой вопрос: есть ли механизм или структура, которая позволила бы мне использовать RFB (т.е. протокол, лежащий в основе VNC) или RDP (тот, что лежит в основе Windows Remote Desktop), чтобы обеспечить удаленный доступ к одному приложению с графическим интерфейсом, а не весь рабочий стол?
1 ответ
Когда мы сравниваем RDP и RFB, основное отличие заключается в том, что RDP разделяют только метаданные, где RBF разделяют весь кадр буфера экрана. Так что RBF медленнее, чем RDP. VNC использует RFB, где Windows-приложения, такие как Lync, используют RDP.
http://sandaruwmp.blogspot.com/2014/05/remote-desktop-application-with-rdp.html Здесь вы можете увидеть простой пример RDP
На самом деле вы можете создать приложение, которое разделяет только одно приложение, а также вы можете использовать множество других протоколов с RDP.
здесь https://github.com/sandaru/RDAPP в этом приложении он использует RDP с TCP, который вы можете выбрать только одно приложение для отображения.
В этом приложении он разделяет рабочий стол через RDP и прослушивает порт TCP, на который можно отправлять такие команды, как "остановить выбранные процессы", "Фокусировать одно приложение" и "поделиться всем окном". RDP реагирует в соответствии с запросами TCP.
я надеюсь, что это будет полезно для вас
ПРИМЕЧАНИЕ. Вышеуказанный источник не содержит никакого механизма обхода NAT.