rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 操作系统 » Linux桌面

x-server 、桌面环境(GNOME、kde)、桌面程序之间的关系实验分析

早就想做这个实验了,今天做了一下。

这是在三台实验机上配置环境执行的命令

[x-server]
ifconfig eth0 192.168.10.1
yum  install xorg-x11-xinit
yum  install xorg-x11-drv-vmware
yum  install xterm
iptables -F
xhost + 192.168.10.3
xhost + 192.168.10.2

[gdm-server]
ifconfig eth0 192.168.10.2
yum  install gnome-session

export   DISPLAY="192.168.10.1:0"

[app-client]
ifconfig eth0 192.168.10.3
yum  install xterm
useradd test  (xterm 在root好像不让执行)
passwd  test

export   DISPLAY="192.168.10.1:0"
iptables -F
yum install gedit

配置完成后,在x-server上xinit ,在gdm-server上执行gnome-session ,在app-client上执行gedit。

如下图:

下面的xterm是x-server执行xinit是启动的,gedit就是在app-client上的启动的了,其余的都是gdm-server上产生。虽然有很多错误,但还是达到了实验目的gnome桌面环境已经启动,gedit上已经有最小化、最大化、关闭按钮了。

这个实验完全说明了可以吧x-server、桌面环境、应用软件分别放在三台机器上。

只是他们之间的关系还不太清楚,有待分析。

在三台机器上都打开过程中,网络流量监控着。发现,gdm-server 与 app-client之间没有任何流量,只有x-server 跟他们两的流量。x-server 监听 6000 端口 ,gdm-server 上的每一个gnome小程序都连接到x-server上,app-client 上的gedit也一样连接到x-server上

看来要分析x11协议了

既然gedit能在x-server上显示,那他就有gedit显示的坐标。x-server 就以事件报的形式告诉给gdm-server ,gdm-server 就在gedit坐标的上面加几个按钮及其它图像。当鼠标点击最大化时,x-server就给gdm-server 发送事件包(鼠标点击了最大化的位置),给app-client发送Sent-ClientMessage事件包;当鼠标点击关闭时,x-server向gdm-server发送事件包(鼠标点击了关闭位置),给app-client发送DestroyNotify事件包(Destroy是销毁的意思)

就是这样了,gdm-server 与 app-client 都不停向x-server 查询自己需要的信息,x-server 都一一予以回应。当有鼠标和键盘等操作事件是,x-server 都以事件的形式告诉gdm-server、app-client。
gdm-server与app-client 都根据收到的事件信息来完成自己的操作。

以上是我通过监控他们之间的来往数据包分析的。具体情况还要详细了解X11协议后才能知道 。

顶一下
(0)
踩一下
(0)