Виртуальные каналы для VNC?
Кто-нибудь знает, погода VNC (RFB) поддерживает виртуальные каналы и надстройки к ним, как это в RDP (Microsoft Terminal Services)? Я просто хочу передать свои данные через соединение VNC...
1 ответ
VNC/RFB, к сожалению, не имеет виртуальных каналов.
Вот лучшая ссылка, которую я нашел на протокол RFB: http://tigervnc.org/cgi-bin/rfbproto
Не зная больше о том, что вы пытаетесь отправить и в каком направлении (ях), есть несколько вариантов, которые приходят на ум:
Точная кодировка имеет поддержку передачи файлов. Здесь есть плохо отформатированная спецификация для полной строгой кодировки: http://vnc-tight.svn.sourceforge.net/viewvc/vnc-tight/trunk/doc/rfbtight.odt?revision=3619
Если у вас есть контроль над клиентом и сервером, вы можете определить пользовательскую кодировку, которая позволяет отправлять ваши данные. Клиент должен объявить, что он поддерживает кодировку, и если сервер ее поддерживает, он начнет ее использовать.
Вы можете использовать сообщения буфера обмена (ClientCutText и ServerCutText) и при необходимости отправлять двоичные данные, которые создают пользовательскую кодировку данных в виде ISO 8859-1 (Latin-1). Недостатком является то, что если сервер его не поддерживает и клиент отправляет данные, он будет вставлен на сервер.
Если вам просто нужно отправить сообщение с сервера на клиент, то вы можете использовать сообщение framebufferUpdate, которое отправляет данные вне текущего окна просмотра (т. Е. На 123 пикселя за правую сторону окна просмотра). Клиенты без поддержки могут не справиться с этим хорошо, хотя.
Другой вариант, если вам просто нужно отправить с сервера клиенту, это то, что вы можете отправить framebufferUpdate в окне просмотра со специальным маркером, а затем немедленно отправить framebufferUpdate (даже в том же пакете) с реальными видимыми данными для его замены., Это будет работать с существующими клиентами (немного больше накладных расходов). Клиенты могут видеть краткое мерцание, хотя.