什么是xserver和xclient

在xwindows体系中,提供界面显示,响应外设操作的是xserver,而运行程序业务逻辑,接受xserver发来的各种事件通知的,是xclient。

当xclient和xserver 在同一台机器上的时候,这种情况下,应用程序调用xclient的接口请求xserver为创建窗口,应用程序可以通过xlib库的过程调用请求xserver创建窗口中子元素,例如滑动条,按钮等。而xserver的作用是提供在屏幕上绘制基础元素的功能,例如填色,画线,画圆等动作,xserver会通过调用底层驱动程序完成这些功能。而xclient通过x协议向xserver发送请求去完成对应的界面操作。

下面是网上一个说的比较清楚的例子:

如果从一台 XP上用Reflection通过 XDMCP 登录到一台 Linux服务器,我们很容易将Reflection当成客户端,而将Linux机器当成服务器。这就完全搞错了。理解了Xwindow的工作原理,这个区别就会很明显。X server 不是指某台机器,而是指一个进程,它负责接受客户的要求,在屏幕上显示客户请求的图形,并且把消息(键盘,鼠标,窗口消息)通知客户程序。比如上面说的Reflection,它其实是才是Xserver,它负责控制那台XP上的显示,Linux机器上的程序,xterm, xxgdb, dtwm(CDE的窗口管理器)……是客户程序。它们通常会使用TCP 6000 号端口连接XP,而XP6000号端口是由Reflection绑定并侦听的,显然这里Reflection才是Xserver。比如,当你通过telnet 启动Linux机器上的xterm,就会在Reflection 的屏幕上显示一个窗口。实际发生的事情是:xterm 请求连接XP6000 号端口和Reflection,跟Reflection建立连接,然后xterm请求得到资源,然后xterm 请求在屏幕上显示一个窗口。当在xterm 的窗口里按下”A”键时,Reflection 会把这个事件通知 xterm 进程,然后xterm 会发送数据报,请求Reflection, “请在坐标(100,30)处显示一个字母A,然后在后面显示一个矩形作为光标。 这样xterm 窗口里就会多显示一个字母。至于KDEGnome,他们是桌面系统不是Xwindow,他们只是一些运行在Xwindow上的程序,他们发出要显示什么东西的请求,比如要在桌面底部显示一个面板、在桌面显示些图标。

http://blog.sina.com.cn/s/blog_4e415c0b0100lulu.html

  


猜你喜欢

转载自blog.csdn.net/challeng_everything/article/details/80207494
今日推荐