08.10.2013 Aufrufe

Skriptum

Skriptum

Skriptum

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

KAPITEL 2. PROGRAMMIERSCHNITTSTELLEN UNTER UNIX 62<br />

}<br />

client = clnt_create(argv[1], PRIMEPROG, PRIMEVERS, "tcp");<br />

if (client == NULL)<br />

{<br />

clnt_pcreateerror(argv[1]);<br />

exit(1);<br />

}<br />

request.min = atoi(argv[2]);<br />

request.max = atoi(argv[3]);<br />

/*<br />

* Call Remote Procedure now<br />

*/<br />

result = find_primes_1(&request, client);<br />

if (result == NULL){<br />

clnt_perror(client, argv[1]);<br />

exit(1);<br />

}<br />

/*<br />

* print the results<br />

*/<br />

printf("count of primes found: %d\n", result->array.array_len);<br />

for (i = 0; i < result->array.array_len; i++){<br />

printf("%8d", result->array.array_val[i]);<br />

}<br />

printf("\n");<br />

/*<br />

* free memory allocated by the XDR-filter<br />

*/<br />

xdr_free(xdr_prime_result, result);<br />

Das XDR-Filter hat im Zuge des Deserialisierens den entsprechenden Speicher zum<br />

Aufnehmen der Ausgabeparameter allokiert. Der Speicher steht der Applikation für<br />

die weitere Nutzung zur Verfügung. Jedoch muss die Applikation diesen Speicher<br />

anschließend durch einen Aufruf von xdr_free explizit freigeben. Nur sie selber<br />

weiß, ab wann sie den vom Filter angeforderten Speicherbereich nicht mehr benötigt.<br />

Falls Client und Server mit unterschiedlichen internen Darstellungen arbeiten,<br />

muss das Filter primes_xdr.c und auch der Client-Stub bzw. der Server-Wrapper<br />

auf dem jeweiligen Zielrechner übersetzt werden. Diese Dateien können jedoch einfach<br />

aus primes.x erstellt werden. Deshalb liefern Anbieter eines RPC-Servers in<br />

der Regel auch die korrespondierende x-Datei aus.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!