VNC服务器为什么不提供多屏幕功能?

问题描述 投票:0回答:1

我有一个Java应用程序,可以利用Linux X服务器描述为单独屏幕或一个逻辑帧缓冲区(即TwinView或Xinerama)的多个物理监视器,但是在硬件中没有相同的表示形式。任何VNC服务器实施AFAIK。我真的很想了解VNC或RFB中有哪些限制因素阻止逻辑屏幕像具有多个显示器的物理X服务器那样被表示。

可能我忽略了执行此操作的某些内容?

我知道,如果我正在编写C / C ++代码,我可以利用Xlib API并连接到多个VNC服务器实例,但是我一直受Java的限制,即每个JVM仅连接到一个X服务器,如所述[C0 ],如果没有回应。

我也知道我可以实例化具有多个显示器的帧缓冲区宽度的单个VNC服务器。这种方法要求代码更改相邻框架/窗口的位置,并且与物理硬件上的渲染有所不同。

理想的情况是,您可以像下面那样启动VNC服务器:

Xvnc:1 -geometry 1920x1080 -geometry 1920x1080

结果将是一个3840x1080的帧缓冲区,但是当下面的Java代码返回的结果不止一个GraphicsDevice时:

here

vncviewer不需要关心逻辑屏幕,只需要将扩展​​帧缓冲区表示为3840x1080。

java x11 xlib vnc
1个回答
0
投票

据我所知,这是该协议的限制(我已经实现了低级客户端-GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gd = ge.getScreenDevices(); for(int i = 0; i < gd.length; i++){ System.out.println(gd[i]); } )。一个vnc连接代表一个帧缓冲区矩形(可能随时间更改其宽度/高度)。您可以在此之上构建一些内容,其中服务器在每个物理屏幕的单独端口上侦听,而客户端建立2个连接]

© www.soinside.com 2019 - 2024. All rights reserved.