2010-11-07 81 views
0

我遇到问题我实际上在我的软件中记录了RFB协议以与VNC服务器通信,并且我想知道如何获取服务器桌面大小的大小。 我已经allready测试serverInit消息内的framebuffer_width,但它不代表桌面的卷轴大小我不知道如何得到它?RFB协议中的PointerEvent&DesktopSize

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

感谢您的回答!

回答

2

听起来像是你的两个问题都可能是客户端的缩放问题。

一些问题,可能会帮助你回答你自己的问题(因为你真的需要,如果你想有一个明确的答案发布的详细信息):

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

顺便说一句,我已经找到了official RFB documentation要有所欠缺,我认为这些链接是RFB参考更好: