x11vnc
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Оригинальный автор(ы) | Карл Рунге |
---|---|
Разработчик(и) | команда libvnc [1] [2] |
Первоначальный выпуск | 2001 |
Стабильная версия | 0.9.16 / 5 января 2019 г [3] |
Репозиторий | github |
Платформа | Юникс, Линукс |
Доступно в | Английский |
Тип | Удаленное администрирование |
Лицензия | GPL-2.0 или новее |
Веб-сайт | libvnc |
x11vnc — это серверная программа виртуальных сетевых вычислений (VNC). Он обеспечивает удаленный доступ удаленного клиента к компьютеру, на котором размещен сеанс X Window и программное обеспечение x11vnc, непрерывный опрос [4] X-сервера буфер кадра для изменений. Это позволяет пользователю управлять своим рабочим столом X11 ( KDE , GNOME , Xfce и т. д.) с удаленного компьютера либо в собственной сети пользователя, либо через Интернет, как если бы пользователь сидел перед ним. x11vnc также может опрашивать устройства кадрового буфера, отличные от X11, такие как веб-камеры или ТВ-тюнеры , iPAQ , Neuros OSD , консоль Linux и Mac OS X. графический дисплей x11vnc является частью LibVNCServer. проекта [1] Это бесплатное программное обеспечение, доступное по лицензии GNU General Public License .x11vnc был написан Карлом Рунге.
x11vnc не создает дополнительный дисплей (или рабочий стол X) для удаленного управления. Вместо этого он использует существующий дисплей X11 , отображаемый на мониторе Unix-подобного компьютера в реальном времени, в отличие от других альтернатив Linux, таких как TightVNC Server. Однако можно использовать Xvnc или Xvfb для создания «виртуального» дополнительного дисплея и подключить к нему x11vnc, обеспечивая доступ X-11 к автономным серверам . [5]
x11vnc имеет функции безопасности, которые позволяют пользователю устанавливать пароль доступа или использовать имена пользователей и пароли Unix . Он также имеет возможность подключения через безопасную ссылку SSL . [4] просмотра SSL Java VNC апплет Предоставляется , который обеспечивает безопасные соединения из веб-браузера . Также поддерживается тип безопасности VeNCrypt SSL/TLS VNC.
Многие расширения UltraVNC для VNC поддерживаются x11vnc, включая передачу файлов. [6]
Алгоритм опроса
[ редактировать ]x11vnc хранит копию кадрового буфера X-сервера в оперативной памяти . Интерфейс X11 программирования XShmGetImage
используется для получения данных пикселей буфера кадра . x11vnc сравнивает буфер кадра X-сервера с его копией, чтобы увидеть, какие области пикселей изменились (и, следовательно, их необходимо отправить средствам просмотра VNC). Чтение данных пикселей из физического буфера кадров может быть намного медленнее, чем запись в него (поскольку графические устройства не оптимизированы для чтения), поэтому последовательная проверка попиксельно часто бывает слишком медленной.
Чтобы улучшить ситуацию, x11vnc считывает полные строки пикселей, разделенных 32 пикселями по вертикали. Как только он достигает нижней части экрана, он снова начинается вверху с немного другим смещением. После 32 таких проходов он покрыл весь экран. Этот метод позволяет x11vnc обнаруживать изменения на экране примерно в 32 раза быстрее, чем последовательная проверка (если только изменения не очень малы, скажем, высотой всего в 1 пиксель). Если X11 присутствует расширение DAMAGE, x11vnc использует его для предоставления подсказок, где чтобы сфокусировать опрос, тем самым находя изменения еще быстрее, а также снижая нагрузку на систему.
Входной ввод
[ редактировать ]Когда x11vnc получает события пользовательского ввода (нажатия клавиш, движение указателя и нажатия кнопок указателя) от средства просмотра VNC, он должен синтетически вводить их на X-сервер. Интерфейсы X11 программирования XTestFakeKeyEvent
, XTestFakeMotionEvent
, и XTestFakeButtonEvent
расширения XTEST используются для достижения этой цели.
Для управляемых устройств, отличных от X11 (например, графического дисплея Mac OS X ), необходимо использовать другие интерфейсы программирования. x11vnc также предоставляет интерфейс, в котором пользователь может предоставить свою собственную программу ввода ввода.
Интересное использование
[ редактировать ]Часто системы специального назначения создаются с использованием системы X Window для управления графическим отображением. x11vnc можно использовать для экспорта изображения системы для удаленного доступа через VNC. Это позволяет осуществлять удаленный мониторинг, управление и устранение неисправностей специализированной системы. Иногда это позволяет избежать отправки технического специалиста на удаленный объект или позволяет пользователям управлять оборудованием со своей рабочей станции или ноутбука. Известно, что x11vnc работал на следующих типах систем: электронный микроскоп , МРТ и радиологии система анализа изображений , консоли управления электростанциями и нефтяными платформами , контроль распределения материалов, испытания систем самозащиты корабля, ЯМР системы кремниевых пластин. , микроскоп для анализа и Управление театральным и концертным освещением. x11vnc используется для экспорта дисплеев X11 во встраиваемые системы на базе Linux , такие как КПК и ПК для домашнего кинотеатра .
Если x11vnc невозможно запустить в специальной системе, иногда его можно запустить на ближайшем компьютере и опросить буфер кадров X-сервера по сети. Вот как к проприетарным X-терминальным можно получить доступ устройствам через x11vnc.
Эмуляция Xvnc
[ редактировать ]Хотя x11vnc в основном используется для X-серверов, связанных с физическим графическим оборудованием, он также может подключаться к виртуальным X-серверам (чьи буферы кадров существуют только в оперативной памяти), таким как Xvfb или сеанс Sun Ray . у x11vnc есть опции ( -create
и -svc
) для автоматического запуска Xvfb, возможно, от имени пользователя Unix, вошедшего в систему. Интерактивный ответ x11vnc и Xvfb может быть не таким быстрым, как Xvnc , однако этот режим включает функции, которых нет в Xvnc, такие как шифрование SSL и имена пользователей и пароли Unix. .
Кэширование на стороне клиента
[ редактировать ]Протокол RFB (VNC) является странным по сравнению с другими протоколами сетевой графики, такими как X11 и RDP , поскольку в нем не предусмотрено кэширование пиксельных данных на стороне средства просмотра. Хотя это упрощает реализацию клиента, приходится платить за интерактивный ответ. Например, при каждом повторном экспонировании окна или фоновой области необходимо повторно передавать (сжатые) пиксельные данные по сети. Этот эффект особенно заметен для окон со сложными областями или областями фотографий (например, окно веб-браузера), которые часто иконифицируются, деиконифицируются или повторно экспонируются.
x11vnc имеет экспериментальную и несколько грубую реализацию кэширования на стороне клиента. Он включается через -ncache
вариант. При создании буфера кадра RFB в этом режиме x11vnc выделяет очень большую рабочую область ниже верхней части, используемой для фактических (экранных) данных пикселей. Затем x11vnc может использовать команду RFB CopyRect, чтобы дать указание средству просмотра перемещать прямоугольники пиксельных данных в рабочую область и из нее. Эти движения выполняются локально на стороне зрителя. Таким образом, x11vnc может управлять рабочей областью для хранения и извлечения данных пикселей без необходимости их повторной отправки по сети.
Режим кэширования на стороне клиента x11vnc может обеспечить заметные улучшения интерактивного отклика для многих действий.
Поскольку она использует существующую команду RFB CopyRect, схема будет работать с любой (т.е. немодифицированной) программой просмотра VNC. Однако есть некоторые недостатки. Во-первых, он потребляет большой объем памяти. Для хорошей производительности следует использовать рабочую область в 10–20 раз больше, чем реальный экран. Таким образом, вместо использования 5 МБ для полноцветного буфера кадров 1280x1024 будет использоваться около 100 МБ (как на стороне клиента VNC, так и на стороне сервера). [7] Это не является большой проблемой для современных компьютеров, но было бы невозможно на устройстве с небольшим объемом памяти. Во-вторых, средство просмотра VNC может обрабатывать рабочую область способами, которые сбивают с толку пользователя, например, отображая ее пользователю или автоматически перемещаясь вниз, если мышь достигает нижней части реального экрана. Средство просмотра Unix VNC в SSVNC автоматически скрывает рабочую область. Наконец, эвристика x11vnc для кэширования и повторного использования данных пикселей окна не идеальна и может привести к неожиданному миганию содержимого окна и другим нежелательным эффектам.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б «Файл README x11vnc» . 4 июля 2018 года . Проверено 9 августа 2018 г. — через GitHub .
- ^ Хендерсон, Стюарт (9 августа 2018 г.). «CVS: cvs.openbsd.org: порты» . openbsd-ports-cvs (список рассылки) . Проверено 9 августа 2018 г.
- ^ «Релизы — LibVNC/x11vnc» . Проверено 14 февраля 2020 г. - через GitHub .
- ^ Jump up to: а б «x11vnc(1) — справочная страница Linux» . Проверено 1 мая 2020 г.
- ^ См. страницы руководства по x11vnc, Xvnc и статью Xvfb .
- ^ «x11vnc: VNC-сервер для реальных дисплеев X» . Проверено 1 мая 2020 г.
- ^ https://github.com/LibVNC/x11vnc/blob/master/doc/FAQ.md#q-79-can-x11vnc-do-client-side-caching-of-pixel-data-ie-so-when -эти-пиксельные-данные-снова-необходимы-их-не-нужно-передавать-по-сети
Внешние ссылки
[ редактировать ]- x11vnc на GitHub
- x11vnc: VNC-сервер для реальных дисплеев X (старая домашняя страница проекта)