之前我对Server,Client的理解正和文中相同,现在看来完全是错误的.直到看了这篇文章我才理解了一些知识.哈~

很多人在用 Xwindow,但是他们是在用一些包装掩盖下的 Xwindow,那些包装有些很不稳定,占用大量资源,以至于有人说 Xwindow 是垃圾。其实 Xwindow 是个很出色的图像系统,您应该抱怨的是那些不稳定的包装,而不是 Xwindow 本身。

Xwindow 是很巧妙的设计,很多时候他在概念上比其他窗口系统先进,以至于经过很多年他仍然是工作站上的工业标准。许多其他窗口系统的概念都是从 Xwindow 学来的。

Xwindow 能够说的东西太多了。下面只分辨一些容易混淆的概念,提出一些正确使用他的建议。

分辨 X server 和 X client
这是我被别人问了好多次的问题,我实在不想再对人说一遍了,所以写在这里偷个懒,嘿嘿。

很多熟悉 Internet 原理的人首次碰到 Xwindow 的这两个概念都会搞错。假如他从一台 Windows 机器上使用 Exceed 通过 XDMCP 登录到一台 Sun 服务器,他就说 Exceed 是客户端(client),而 Sun 机器是服务器(server)。这就完全搞错了。

理解了 Xwindow 的工作原理,这个区别就会很明显。X server 不是指您登录的那台机器,而是指一个程式,他负责在某台机器上接受客户的需要,在屏幕上显示客户请求的图像,并且把消息(键盘,鼠标,窗口消息)通知客户程式。

比如上面例子里的 Exceed 就是个 X server,他负责控制那台 Windows 机器上的显示(display),Sun 机器上的程式,xterm, xxgdb, dtwm(CDE的窗口管理器),……是客户程式。他们通常会使用 TCP 6000 号端口连接 Windows 机器,而Windows机器的 6000 号端口是由 Exceed bind 和 listen 的,怎么样,我们的 Internet 专家,Exceed 看起来是个 server 吧 icon_smile.gif

比如,当您通过 telnet 启动 Sun 机器上的 xterm,就会在 Exceed 的屏幕上显示一个窗口。实际发生的事情是: xterm 请求连接 Windows 机器的 6000 号端口,和Exceed 跟 Exceed 连接,然后xterm请求得到资源,然后 xterm 请求在屏幕上显示一个窗口。

您在 xterm 的窗口里按下"A"键时,Exceed 会把这个事件通知 xterm 进程,然后 xterm 会发送数据报,请求 Exceed, “请在坐标(100,30)处显示一个字母A,然后在后面显示一个矩形作为光标。”,这样您的 xterm 窗口里就会多显示一个字母。

这下您理解了吗?不?那还是自己多用用,体会体会吧。

Xwindow 的网络透明性
刚才那个 Exceed 用户,他的客户程式不但能够运行在那台 Sun 机器上,而且能够运行在网络里其他的机器上,或在本机上。比如他有可能同时通过 telnet 登录到几台 Sun 工作站,几台 Linux PC,他能够在那些机器上都起动 xterm,在这台 Windows 机器上的 Exceed 上显示。假如他安装了 cygwin,他还能够启动本机上的 cygwin里 的 xterm,用同样的方式显示。

假如他使用 xrdb 在本机的 Exceed 配置了 xterm 的样式,比如背景 midnightblue, 前景 白色,字体 -*-adobe-courier-*,……,那么,Sun, Linux, cygwin 里的 xterm,虽然没有经过配置,但是他们知道:“这个 X server 需要我用这个背景色,这个前景色,这个字体……”,他们会在您的屏幕上显示同样风格的窗口。

使用鼠标选择一段字符,然后就能够在另外的程式里按鼠标中间,把字符粘贴过去。不论这个程式运行在哪里。

看看更大的一个图景:您的屏幕上有三台机器上的 xterm, 两台机器上的 gvim,两台机器上的 mozilla 在显示,而他们都受本机的 FVWM 操纵,他们之间能够随意进行拷贝粘贴…… 从这里您能够初步体会到 Xwindow 的网络透明性,他使您方便的操作很多机器。

什么是窗口管理器?
很多人不知道窗口管理器是怎么回事。他们认为 Gnome 和 KDE 是窗口管理器,认为窗口管理器就是能够提供一个工具条,能够配置桌面背景,能够配置很多菜单的东西。而其实,窗口管理器只是 Gnome 和 KDE 的一部分,他的主要功能是您平时根本没有注意,但是却很重要的操作。窗口管理器的主要功能是:移动窗口,改变窗口大小,图标化(最小化)窗口,改变窗口层叠顺序……

通常的X客户程式无需知道有人想移动他,他只知道乖乖听窗口管理器的话。假如没有窗口管理器运行,您的程式会一个堆一个,您没有办法操纵被盖在下面的程式,您只能使用最上面一个程式,而且您不能移动他,您不能改变他的大小。这样的系统根本不能用!

其实您的窗口上的标题,按钮,漂亮的边框,全都是窗口管理器提供的,而不是程式自己的,这样您用窗口管理器就能改变任何窗口的样式了。当您点击关闭窗口的那个按钮,您其实点击的是窗口管理器放在您的程式窗口上面的一个小窗口,发现他受到点击后,窗口管理器就会通知那个程式:“喂!有人想关掉您,您自己准备准备后事,然后退出吧。”

不同的机器在本机显示的窗口,由窗口管理器统一装饰和指挥。比如,窗口管理器决定: xterm 窗口上面都应该有四个按钮,一个在左边,点击他会显示窗口操作菜单,另外三个在右边,分别是最大化,最小化和关闭。窗口都使用 7pixel 厚的边框,窗口首次出现的时候首先在桌面上找一个空位置,假如很难找到,就找一个能够最少的遮盖其他窗口的位置……

这些都是窗口管理器的职责。

Gnome 和 KDE 是什么?
有人把 Gnome 和 KDE 叫做窗口管理器,甚至更有人把他们叫做 Xwindow。经常看到有人问:“装哪种 Xwindow 好啊?Gnome 还是 KDE?” 其实您不安装 Gnome 和 KDE 也能够使用 Xwindow.

Gnome 和 KDE 是“桌面系统”,一种很多程式和函数库的集合。他们的设计目的是提供一致的方便的操作方式来满足普通用户的需要。他们不但包含窗口管理器,更有很多实用程式和应用程式,比如配置程式,工具条,编辑器,绘图工具…… 其实 Gnome 能够和很多窗口管理器合作,在历史上,Gnome 使用过的窗口管理器包括 englightenment, sawmill, sawfish, metacity。KDE 的窗口管理器叫做 kwin。

您也知道,设计整整一套应用程式:编辑器,绘图程式,浏览器,…… 是很不容易的。所以他们肯定是不如专用的编辑器,绘图程式,浏览器的。但是需要不太高的用户也能够用他们。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!