X Window 系统使用指南--X的基本架构( 二 )


只要藉著使用这函数馆(在标准X版为xlib)即可,如图2-2。┌—————————————┐
│ p17 fig 2.2 │
│ │
│ 图 2-2 xlib函数馆的功能│
└—————————————┘总结来说,只要client程式利用函数馆,自然有能力用到所有可用的通讯
方法 。Client和Server通讯大略分为两类,相对应於二种基本X系统的操作模式:1. server和client在同一部电脑执行,则它们彼此均可使用机器上任何
可用的方法做交互处理通讯(inter-process communication
(简称IPC)), 见图2-3
,在这种模式下,X可以像许多传统的视窗系统一样有效率
的操作 。┌—————————————┐
│ p18 fig 2.3 │
│ │
│ 图 2-3 在相同机器上的 │
│ client和server │
└—————————————┘2. client在一部机器上执行,显示器和server则在另一部机器上,则
client和server的通讯必需透过网路利用彼此同意的协定(protocol)
方可 。目前,最常见的协定为TCP/IP和DECnet,但其它任何被提供的
可信赖地协定亦可使用 。图2-4 显示一个典型的Ethernet网路的通讯 。┌—————————————┐
│ p18 fig 2.4 │
│ │
│ 图 2-4 在不同机器上的 │
│ client和server │
└—————————————┘这种透过网路,使得应用程式的操作,如同在本地机器一样的能力称
为网路透通性(network transparence),几乎是X独一无二的特性
(注1) 。这种特性使得它非常适合建立在有弹性地多目标混合机器
网路上 。注1:有几种例如Sun Microsystems 的NEWS的视窗系统有使用到网路结构,
但没有一种被广泛地使用,而有超过一家以上的制造厂商使用它们 。因为client和server完全独立,一种名之为X-terminal 的新型态显示器
被发展出来 。简单的说,X-terminal 是一种除了能直接在上面执行X server
程式外,什麽也没有的工作站,它有键盘,滑鼠和萤幕,以及一些和网路互相
通讯的方法(所以在其它主机上的client可在它上面显示),但并没有档案系
统,也不提供一般目的 (general purpose)的程式,一般目的的程式需要在网
路上执行 。
2.2 Server和Client如何交谈本节描述client和server互相通讯时,双方各传输些什麽 。基本上,一个
client要求server去执行输出,输入则藉著 "事件" (event) 的通知由server
来掌握( "事件" :如按下键盘的键或滑鼠的按钮等等) 。
2.2.1 Client送达server的东西;Output Handing (输出交予)当一个client要求server做一个动作,例如在一个指定的萤幕上建立一个特
殊特徵的视窗,或者在一个视窗中写一列文字串 。这时client是藉著送 "需求"
(requests)到server上来达成 。一个 "需求" 是一个被封装(package) 的简单
区块(block) ,区块包含一个 "操作码"(opcode) 来指示要执行何种操作,伴
随著一些引数(arguments) 提供更多的需求细节 。例如:清除一个视窗内的一
个长方形区域,client会送一个16位元组(byte)的需求区块,来指定是哪一个
视窗,欲清除区域的左上角座标及区域的高和宽 。这个格式有几个重要的特徵:. 需求区块的内容,和client与server在何种型态上的机器上执行完全无
关 。一个client可以输出需求给在任何型式显示器上的任何X视窗server 。需
求和语言、机器及作业系统均无关 。. 每一个需求包含了视窗的细节和其它被使用的资源,对一个client送至
特定server的需求超过一种以上的连接方法,所以在网路架构上提供的视窗数
目没有限制 。. 需求区块通常大小为20位元组左右,算是相当的小,因为需求是设定为

推荐阅读