Skriptum
Skriptum
Skriptum
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.