什么是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

  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值