问题标签 [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 回答
185 浏览

websocket - 对等连接传输 RFB 协议的可能性有多大?

我一直在寻找可能的解决方案,建立 p2p(浏览器到浏览器)通道的框架,以传输 RFB 协议。

恐怕我错过了网上的一些东西。

SN:应该有可能使用带有中间 Web 服务器的传统架构来传输两个未知资源。

0 投票
1 回答
398 浏览

linux - Linux 帧缓冲区驱动程序能否获得对其内容的所有更改的通知?

假设一个假设的远程帧缓冲协议,实现为 Linux 帧缓冲驱动程序。

当帧缓冲区的内存通过 mmap 映射或类似方式直接从用户空间写入时,这样的驱动程序能否收到通知?

http://lxr.free-electrons.com/source/drivers/video/fbdev/skeletonfb.c?v=4.4#L653显示了模块编写器可以实现的所有功能以获取此类信息,但乍一看我不能查看可能候选的 xxxfb_mmap 或 xxxfb_write 的实现。


更新:

我刚刚fb_writehttp://lxr.free-electrons.com/source/drivers/video/fbdev/core/fbmem.c?v=4.4#L812看到

仅当通过文件描述符写入帧缓冲区或通过映射写入其内存时才会调用此方法吗?

我正在寻找一种方法,仅在其内容发生更改时搜索内存帧缓冲区的更改,而不是连续搜索它。

0 投票
1 回答
1011 浏览

encryption - 为 VNC 定义了哪些协议代码?(RFB 协议)

就在最近,我发现 VNC 在 Windows、Linux 和其他系统上的各种实现都有一个基于 ID 的方法来协商 rfb 协议的协议方法以用于通信。有些协议比其他协议有更多的加密,有些只会加密登录凭据,有些根本不会使用任何加密。

我在哪里可以找到现有或标准化协议 ID 及其名称的(大部分是完整的)列表?如果每个条目都附有高级信息(例如规格)的链接,我将不胜感激。

0 投票
0 回答
292 浏览

c - X11VNC 响应延迟

我一直在尝试编写一个简单的 VNC 查看器,它请求在 nvidia Tegra K1 板上每 30 毫秒更新一次帧缓冲区。

我能够接收数据。但我注意到每次帧更新之间有超过 100 毫秒的相当大的延迟,这降低了每秒的总帧数。包大小4标记帧的开始。

此数据是在以全屏模式播放视频时获取的。

Q1:既然我要求每 30 毫秒更新一次,X11VNC 不应该尽快给我发送更新吗?为什么每次更新之间会有 100 毫秒的延迟?

X11perf 测试给出以下数据

Q2:我认为 X11VNC 在检索和发送帧缓冲区更新方面的能力比我从上述结果中得到的要多吗?如果是这样,我如何解释这些结果?

0 投票
0 回答
52 浏览

c++ - LibVncClient 获取操作系统信息

我使用 libvncclient 来构建一个查看器,在其中我尝试集成一个特定的热键,这些热键执行一些脚本,这些热键作为菜单选项完成,例如enable taskmanager窗口的“运行 cmd”和“打开终端”更新repos' 等。我需要检测操作系统信息,但我没有看到任何可以从 rfb proto 中获取此信息的信息

我查看了rfbclient.hrfbClient 结构并没有保存任何存储此信息的回调/或字段,并且似乎没有 API。但是在 rfc 中有这个东西https://www.rfc-editor.org/rfc/rfc6143#section-7.3.2

服务器收到ClientInit消息后,发送ServerInit消息。这会告诉客户端服务器帧缓冲区的宽度和高度、像素格式以及与桌面关联的名称:

理查森和莱文信息 [第 11 页]

RFC 6143 远程帧缓冲协议 2011 年 3 月

但似乎 libvnc 没有处理这个问题,有没有办法可以获取这些信息?

0 投票
0 回答
253 浏览

x11 - RFB 和 X11 协议如何协同工作?

我试图了解 VNC 如何使用 X11 和 RFB 协议工作。

我看到我的 XVnc 进程监听 59xx(RFB)、58xx(HTTP) 和 60xx(X11) 端口。

  • 我不知道 HTTP 是做什么用的,但我认为我们可以从图片中排除它,并且仍然可以理解 Xvnc 如何使用 RFB 和 X11 协议。

  • 从这里的定义:https ://www.rfc-editor.org/rfc/rfc6143 ,我知道RFB协议用于通过GUI进行远程访问并使用帧缓冲区。

  • 每个客户端会话都有一个专用的帧缓冲区,由客户端访问,根据客户端请求进行修改,并将其更新发送给客户端。

  • X11 是这个协议,用于显示任何 GUI 应用程序,例如它告诉如何显示窗口或文本等。

那么,我的以下理解正确吗?

  • 客户端使用 RFB 协议在 :59xx 端口上与服务器通信并发送任何请求。
  • 然后请求由运行在 :59xx 端口上的 Xvnc 服务组件处理,并在 X11 协议中创建对 :60xx 端口的请求。
  • :60xx 端口上的 Xvnc 服务组件然后提供输出并由 Xvnc 服务处理并更新帧缓冲区。
  • 更新通过 RFB 协议以最简单的方式发送给客户端,使用不同的方法减少网络数据。
0 投票
1 回答
207 浏览

c - 我们可以在同一个进程中托管多个 vnc 服务器(使用 LibVNCServer 库)吗?

在 LibVNCServer 库中有一个名为 camera.c 的示例,它捕获相机快照并每隔一段时间填充 vnc 服务器使用的帧缓冲区。我的要求是对 mpeg 传输流(许多来源而不是像相机这样的单一来源)做同样的事情。因此,每个传输流需要一个 vnc 服务器。

我在 RFB 协议中读到,我们可以在从 5900 (5900+x) 开始的端口上的同一主机上托管多个 vnc 服务器。但是,最好在同一进程中托管多个 vnc 服务器,这样可以避免 vnc 服务器和生成数据的进程之间不需要的 I/O。

LibVNCServer 是否支持该用例,还是我必须为每个视频流启动一个 vnc 服务器进程?

注意:我浏览了库,看到 rfbScreenInfoPtr 到处循环,不是静态的。但无法断定 LibVNCServer 是否是线程安全的,因为我不熟悉 C。

0 投票
1 回答
102 浏览

javascript - NoFlo graph.json / graph.fbp 到 JavaScript 文件

我有一个noflo graph.json。

我的基本用例是

  1. 使用 noflo-ui 生成 graph.json
  2. 使用任何可能的方式将 graph.json 转换为 javascript(或节点模块)文件。
  3. 在我自己的 node express 应用程序中运行该文件。

我想在 javascript 中查看最终编译的代码。我一直在搜索文档和源代码。我只是找不到它。

0 投票
0 回答
142 浏览

linux - Linux 帧缓冲检测变化

我想检测帧缓冲区何时在没有X.

我应该在哪里寻找它?驱动程序,内核,用户空间代码?我知道我可以cp /dev/fb0 fb0用来复制帧缓冲区并将其与之前复制的帧缓冲区进行比较。但我认为这不是有效的。

0 投票
1 回答
641 浏览

sockets - 使用 Ada 套接字的 TCP/IP:如何正确完成数据包?

我正在尝试使用 Ada 的 Sockets 库来实现远程帧缓冲区协议,但我无法控制我正在发送的数据包的长度。

我正在遵循RFC 6143规范(https://tools.ietf.org/pdf/rfc6143.pdf),请参阅代码中的注释以获取节号...

问题似乎是(根据wireshark)我对各种'Write程序的调用导致字节在套接字上排队而没有被发送。

因此,两个或多个数据包的数据被作为一个发送并导致格式错误的数据包。第 7.1.2 和 7.1.3 节在一个数据包中连续发送,而不是分成两个。

我错误地认为'Read来自套接字的 ing 会导致传出数据被刷新,但事实并非如此。

我如何告诉 Ada 的 Sockets 库“这个数据包已经完成,现在就发送”?