0

我有一个问题,我实际上是在我的软件中重新编码 RFB 协议以与 VNC 服务器通信,我想知道如何获取服务器桌面大小的大小。我已经在 serverInit 消息中测试了 framebuffer_width 但它不代表桌面的卷轴大小我不知道如何获得它?

我的第二个问题是将 PointerEvent 消息发送到服务器。要移动鼠标,实际上在我的软件中我将鼠标的 x 和 y 设置为位置 {0, 0},当我将它发送到 VNC 服务器时它可以成功运行,但是当我将 5 添加到 x 位置时它没有t 移动 5 像素它移动的比我想要的大,我不明白为什么????你能帮我吗 ?

感谢您的回答!

4

1 回答 1

2

听起来您的两个问题都可能是您客户的扩展问题。

一些可能会帮助您回答自己问题的问题(因为如果您想要明确的答案,您确实需要发布更多信息):

  • 您如何确定桌面的实际大小不是 serverInit 消息中发送的宽度?也许您正在启动 VNC 服务器并假设它使用与服务器上当前桌面相同的大小,实际上它以不同的默认大小启动。对于 *nix 系统上的 VNC 服务器,VNC 服务器通常作为独立于主桌面的单独桌面运行,并且大小不一定相同。
  • 您确定将 serverInit 宽度和 pointerEvent x 和 y 位置视为 16 位值吗?
  • 您是否(广告和)在 ServerInit 之后获得 DesktopSize 伪编码?连接后服务器可能会更改帧缓冲区大小。
  • 您使用什么语言/框架/等来实现客户端。您确定渲染功能没有以某种方式缩放吗?

顺便说一句,我发现官方 RFB 文档有些缺乏,我认为这些链接更适合 RFB 参考:

于 2010-11-07T20:52:29.350 回答