08.10.2013 Aufrufe

Skriptum

Skriptum

Skriptum

MEHR ANZEIGEN
WENIGER ANZEIGEN

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;

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!