有谁知道天气 VNC (RFB) 支持虚拟频道和插件,就像它在 RDP(Microsoft 终端服务)中一样?我只想通过 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(即使在同一个数据包中)以替换它. 这将适用于现有客户端(更多开销)。客户可能会看到短暂的闪烁。