Skriptum
Skriptum
Skriptum
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
KAPITEL 2. PROGRAMMIERSCHNITTSTELLEN UNTER UNIX 55<br />
• XDR codiert prinzipiell nur die Dateninhalte, nicht jedoch den zugrundeliegenden<br />
Datentyp. Es muss also eine implizite Absprache zwischen Client und<br />
Server über die Struktur der Parameterdaten bestehen.<br />
Die XDR-Bibliothek stellt Routinen für das Serialisieren bzw. Deserialisieren von<br />
Daten zur Verfügung. Die Konvertierung erfolgt hier immer zwischen den Daten in<br />
der internen Darstellung und einem sog. XDR-Stream, der die Daten in serialisierter<br />
Form aufnehmen kann. Für jeden Datentyp (einfach oder strukturiert) ist eine Routine<br />
zur Konvertiertung vorhanden, diese Routinen heißen auch XDR-Filter. Die<br />
Gesamtstruktur des zu konvertierenden Parameters gibt hier die Reihenfolge des<br />
Aufrufes vor. Die Routinen der XDR-Bibliothek arbeiten wahlweise in eine bestimmte<br />
Richtung (intern→XDR-Stream: serialisieren, XDR-Stream→intern: deserialisieren).<br />
Die tatsächliche Richtung wird beim Anlegen des XDR-Streams festgelegt.<br />
Hier ein Beispiel:<br />
Die Funktion xdrstdio_create() verbindet einen XDR-Stream mit der Console.<br />
#include <br />
#include <br />
void xdrstdio_create (xdrs, file, op)<br />
XDR *xdrs;<br />
FILE *file;<br />
enum xdr_op op;<br />
Das folgende Fragment bereitet den XDR-Stream handle für das Serialisieren, d.h.<br />
für das Konvertieren von der internen Darstellung und das Versenden an die Console<br />
vor. Die umgekehrte Richtung wird mit XDR_DECODE selektiert:<br />
XDR handle;<br />
xdrstdio_create(&handle, stdout, XDR_ENCODE);<br />
Die Funktion xdr_int() konvertiert einen Wert vom Typ int:<br />
#include <br />
bool_t<br />
xdr_int (xdrs, ip)<br />
XDR *xdrs;<br />
int *ip;