PointerEvent& RFB协议中的DesktopSize

时间:2010-11-07 16:13:38

标签: c++ protocols vnc rfb-protocol

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

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

感谢您的回答!

1 个答案:

答案 0 :(得分:2)

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

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

  • 您如何确定桌面的实际大小不是作为serverInit消息中的宽度发送的大小?也许您正在启动VNC服务器,并假设它使用与服务器上当前桌面相同的大小,实际上它是以不同的默认大小开始的。对于* nix系统上的VNC服务器,VNC服务器通常作为与主桌面分开的桌面运行,并且大小不一定相同。
  • 您确定要将serverInit宽度和pointerEvent x和y位置视为16位值吗?
  • 您是否(广告并)在ServerInit之后获取DesktopSize伪编码?连接后,服务器可能会更改帧缓冲区大小。
  • 您使用什么语言/框架/等来实现客户端。你确定渲染函数不是以某种方式缩放吗?
顺便说一下,我发现official RFB documentation有点缺乏,我认为这些链接更适合RFB参考: