Im
Wesentlichen erledigt diese Kommunikation die Funktionsbibliothek
Xlib
- eines der Kernstücke jeder X11-Distribution. Der X-Server
"bedient"
die X-Clients mit seinen graphischen Darstellungsfähigkeiten
und
liefert sämtliche Benutzereingaben über Tastatur,
Maus und andere
Geräte. Eine herausragende Eigenschaft des X-Window-Systems
ist, dass
X-Client und X-Server sowohl auf dem gleichen Rechner als auch -
über
das Netzwerk kommunizierend - auf unterschiedlichen Maschinen laufen
können.
X-Protokoll
Die Kommunikation zwischen X-Client und X-Server ist durch das
X-Protokoll
geregelt. Dieses Protokoll umfasst:
Requests:
Aufforderungen des X-Clients and den X-Server:
Erzeugen und Anzeigen von Fenstern und Fensterkomponenten, Zeichnen
graphischer Elemente, Platzierung von Text in bestimmten Schriften usw.
Diese Requests sind möglichst einfach
gehalten und beinhalten
meist "atomare" Zeichenaktionen, wie Punkt, Linie, Rechteck etc.
Replies:
Antworten des X-Servers auf Requests
eines
X-Clients. Zur Verbesserung der Performance sind nicht auf alle Requests
auch Replies notwendig.
Events:
Events sind
Tastatureingaben, Mausaktionen
u.ä., die der X-Server dem X-Client mitteilt. Um den
Netzwerkverkehr zu
minimieren, werden schon seitens des X-Servers mit Event-Masken nur die
"Ereignisse" herausgefiltert, die für den X-Client relevant
sind.
Errors:
Schließlich gibt es verschiedene
Fehlermeldungen, die
der X-Server - ähnlich wie Events - bei
Bedarf an den X-Client
sendet.
Wie schon erwähnt, ermöglicht diese konsequente
Client-Server-Architektur sowie das klar kodifizierte und frei
zugängliche X-Protokoll X-Clients und X-Server verteilt im
Netzwerk zu
betreiben. Dabei baut der X-Client eine oder mehrer TCP-Verbindungen
zum X-Server auf. Der Identifikation eines X-Servers dient die
Display-ID:
Diese setzt sich aus dem Namen oder der
IP-Adresse
der Maschine, wo der X-Server läuft, und der Display-Nr. des X-Servers
zusammen. Normalerweise ist diese Nr. 0. Darüber hinaus kann
ein
X-Display mehrere Bildschirme verwalten, die ebenfalls über Screen-Nr.
(0,1,2,3) einzeln angesteuert werden können. Die Syntax der Display-ID
lautet:
ip-adresse:disp-nr.screen-nr
z.B. 192.168.1.1:0.0
Jedem Display entspricht eine eigene X-Server-Instanz, die über einen
eigenen TCP-Port angesprochen wird. Dabei gilt folgende Zuordnung:
Diplay-Nr. 0 <-> TCP-Port 6000
Diplay-Nr. 1 <->
TCP-Port 6001
Diplay-Nr. 2 <->
TCP-Port 6002
u.s.w.
In der Regel entnehmen X-Clients die Display-ID der Umgebungsvariable
DISPLAY oder sie wird Ihnen über einen Kommandozeilen-Parameter
übergeben, z.B.
xterm -display
192.168.1.1:0.0
Befinden sich X-Server und X-Client auf demselben
Host, so kann die IP-Adresse komplett wegfallen. Die Verbindung läuft
dann über lokale UNIX-Sockets. Konkret sieht das dann
folgendermaßen aus:
xterm -display :0.0
für das erste lokale Display
xterm -display :1.0
usw.