问题标签 [rfb-protocol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
941 浏览

c++ - RFB 协议中的 PointerEvent 和 DesktopSize

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

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

感谢您的回答!

0 投票
1 回答
2165 浏览

client - VNC 连接代理(RFB 协议服务器)

请考虑以下场景:

  • VNC 客户端尝试连接位于 NAT 后面的 VNC 服务器。

  • 我在 java 中编写了一个端口转发器,可以帮助我完成上述任务,并且工作正常。

  • 现在我需要以某种方式在此转发器中添加连接代理功能,以便我还可以拦截 VNC 客户端 - 服务器之间的通信,并在转发实用程序中验证 VNC 客户端。

您可能已经猜到,实际上我正在使用从 VNC 客户端收到的密码在我的应用程序中进行某些身份验证。由于 RFB Server 可以在应用层实现,我想这种拦截是可能的...... VNCAuthentication(DES 加密/解密)用于上述所有通信。在转发实用程序中成功验证后,我将让相应客户端继续转发,否则我可以关闭它(停止转发)。

我已经尝试了一些实现,也尝试过自定义 rfb 服务器的 java 实现......但仍然无法到达那里。这需要一些时间,我知道,但需要确认我是否正确思考。

请让我知道上述场景的实施是否模棱两可,不可能或非法,如果可能,请告诉我一些行会...

0 投票
1 回答
1585 浏览

api - RFB协议的实现

我正在寻找RFB protocol在我的项目中使用它的实现,经过长时间的搜索,我遇到了这个主题(答案是由专家成员写的......)我已经在另一个论坛上发布了一个主题,我有同样的答案。

我的问题是:为什么我们调用它RFB protocol并且没有实现它的 API 或库?据我所知,一个协议应该有一个 API 来使用它;如TCP/IP、UDP...

PS:我在这里发布的另一个关于同样问题的问题

0 投票
1 回答
553 浏览

network-programming - RFB 参考实现?

我正在编写一个 RFB 服务器。我想知道是否有人知道 RFB 参考客户端。

目前,我运行 RealVNC 并要求它连接到我的 RFB 服务器,它工作正常。但是,RealVNC 旨在提供良好的最终用户体验。它并不打算测试协议功能的每一种可能的有效组合。所以我知道 RealVNC 使用的功能是正确实现的,但我不知道 RealVNC 不使用的功能是否完全有效。但是,如果我能以某种方式进行检查,那将非常有用。

有什么建议么?

(当然,我也可以编写自己的 RFB 客户端。但这并不能证明任何事情。如果某些东西不起作用,我无法判断是客户端还是服务器坏了。如果一切正常工作,这仍然不意味着两端都正确实现了 RFB,只是每个都有与另一个相同的错误。)

0 投票
0 回答
913 浏览

image-processing - ARGB 的像素格式数据结构

我正在用 Java 实现 RFB 协议(VNC 服务器)。我无法理解PIXEL_FORMAT协议中提供的内容。像素格式数据结构的定义是:

RFB 协议详细定义了每个标志的含义,但我仍然无法确定原始 ARGB 图像的正确值。我正在使用以下值:

在使用 RealVNC 客户端时,我得到灰度图像,而在使用 TightVNC 客户端时,我并排得到图像的四个不同层。

谁能帮我获得正确的编码?

0 投票
1 回答
1504 浏览

html - 将 RFB 或 RDP 用于单个 GUI 应用程序

我希望能够创建一个远程客户端可以通过网络查看的 GUI。

一种方法是用 HTML5 对整个 GUI 进行编码,然后在 Apache 等服务器上运行它;这样做的主要困难是 GUI 至少包括一个,有时是两个,包含实时视频流(没有任何声音)的窗口,并且似乎没有一种将实时视频流式传输到 HTML5 的好方法 - 特别是因为它确实需要活着;几秒钟的延迟是不可接受的。

另一种方法(我已经做过,实际上效果很好)只是将 GUI 编码为桌面应用程序(例如使用 Qt),然后使用 VNC 或 Windows 远程桌面远程查看桌面。这提供了所需的响应能力和无延迟,但缺点是整个操作系统桌面都可以访问,而不仅仅是我的一个应用程序。

所以,这是我的问题:是否有可用的机制或框架使我能够使用 RFB(即底层 VNC 协议)或 RDP(底层 Windows 远程桌面)来提供对单个 GUI 应用程序的远程访问,而不是整个桌面?

0 投票
1 回答
6275 浏览

vnc - RFB协议和VNC协议有什么联系

所以我读过RFB协议和VNC协议,但我不明白两者之间的联系。

我正在阅读: http ://www.realvnc.com/docs/rfbproto.pdf 我看到的只是关于 RFB 协议的解释,但我不明白 vnc 连接到它的位置。

VNC 就像是发送和接收帧缓冲区的程序的名称?RFB 是执行此操作的实际协议吗?

谢谢

0 投票
1 回答
133 浏览

c - Incorrect color encoding in Remote Framebuffer server

I am working on a simple implementation of a RFB server using "RAW" pixel encoding. I am using TightVNC as my desktop client. I have the code working up to the point where the client is able to request the entire "desktop" which is 640x480 pixels. My test pattern is drawing correctly with regard to shape but the colors are wrong.

I'm trying to use 8 bits per pixel: three red, three green and two blue encoded as RRRGGGBB in each byte.

My ServerInit packet contains this pixel encoding specification...

The entire structure is defined thus:

Now if I fill my desktop image with 0xe0 (binary 111 000 00) then I expect this to be interpreted as pure bright red. But it is appearing as a light blue color (as if the 8 individual bits were interpreted backwards!). The shape of my test pattern is correct as I am drawing a few white pixels in the top corner (white is binary 111 111 11 obviously).

I do not understand this. I believe I have followed the algorithm and encoding as it is described in the RFB specification... http://vncdotool.readthedocs.org/en/latest/rfbproto.html#serverinit

What am I doing wrong?

0 投票
0 回答
306 浏览

java - 滚动期间的 VNC 客户端帧缓冲区更新

我正在为学校使用开源 Android vnc 客户端 ( https://sourceforge.net/projects/multivnc/ ),我想做以下事情:

我希望帧缓冲区在我滚动/移动手指时更新(而不是在我停止滚动时)。我知道在我移动手指时正在发送输入,但帧缓冲区会等待更新,直到我停止滚动。VNCconn.java 文件在下面,它是更新 VNC 的帧缓冲区所涉及的代码部分是private void processNormalProtocol

当我放下手指时,它会冻结整个帧缓冲区并等待我停止滚动或抬起手指来更新屏幕。

当我放下手指开始滚动时,代码停在:

rfb.readServerMessageType();

因为它在 readServerMessgeType 处停止,所以代码不会转到下面的行来更新 Framebuffer。有大佬知道怎么更新吗???

我尝试删除此行(因为我不希望滚动时代码卡在此处):

int msgType = rfb.readServerMessageType();

但我得到这个错误:

我可以按照代码的逻辑看到 readServerMessageType 转到 rfb.java 文件,然后转到 Android Studio 中一个名为“DatainputStream.java”的已关闭文件,这是卡住的地方,遗憾的是不能更改,因为它是一个锁定的文件:

这是涉及更新 Framebuffer 的 VNCConn.java 部分

这是 rfb.readServerMessageType() 是什么,它永远不会脱离 is.readUnsignedByte(); 直到滚动停止

这会调用 Datainputstream.java (已锁定,我无法修改)

0 投票
2 回答
3386 浏览

visual-c++ - c++ 中的 RFB / VNC 客户端(TRLE 编码)

我正在用 vc++ 制作一个 vnc 客户端,需要为 TRLE 编码方案制作它。我正在使用紧密的 vnc 或真正的 vnc 作为我的服务器,它们能够以 TRLE 发送数据(编码值 = 15)。由于我是 RFB 和 VNC 的新手,我现在不确定如何读取从服务器获取的数据(我知道服务器以消息类型 0 发送它,带有 x、y、w、h 和 encoding_type)并解码数据。是否有任何示例可以用来理解 RFB 和解码技术的实现?我在 github 上发现了大多数 ZRLE、Copyrect 或 Raw 编码示例,这些示例在解释上还不够清楚。