spray(3N) spray(3N)
NAME
spray - Daten zum Überprüfen des Netzwerks versenden
SYNTAX
#include <rpcsvc/spray.h>
BESCHREIBUNG
Das spray-Protokoll sendet Pakete an eine angegebene Maschine, um die
Geschwindigkeit und die Verläßlichkeit der Kommunikation mit dieser
Maschine zu testen.
Das spray-Protokoll ist normalerweise nicht über eine spezielle C-
Funktionsschnittstelle erreichbar. Es kann jedoch mittels der Schnitt-
stelle für ferne Prozeduraufrufe clntcall() [siehe
rpcclntcalls(3N)] auf das Protokoll zugegriffen werden. Das Proto-
koll sendet ein Paket an den aufgerufenen Rechner. Der Rechner bestä-
tigt daraufhin den Empfang des Pakets. Das Protokoll zählt die Anzahl
der Bestätigungen und liefert diese Anzahl zurück.
Das spray-Protokoll bietet im Augenblick folgende Prozeduren an, die
in der angegebenen Reihenfolge aufgerufen werden sollten:
SPRAYPROCCLEAR Diese Prozedur setzt den Zähler zurück.
SPRAYPROCSPRAY Diese Prozedur sendet das Paket.
SPRAYPROCGET Diese Prozedur liefert die Anzahl der Bestätigun-
gen und die vergangene Zeitdauer seit dem letzten
Aufruf von SPRAYPROCCLEAR zurück.
Die folgenden XDR-Routinen sind in librpcsvc verfügbar:
xdrsprayarr
xdrspraycumul
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
spray(3N) spray(3N)
BEISPIEL
Das folgende Programmstück demonstriert die Verwendung des spray-
Protokolls:
#include <rpc/rpc.h>
#include <rpcsvc/spray.h>
. . .
spraycumul sprayresult;
sprayarr spraydata;
char buf[100]; /* beliebige Daten */
int loop = 1000;
CLIENT *clnt;
struct timeval timeout0 = {0, 0};
struct timeval timeout25 = {25, 0};
spraydata.sprayarrlen = (uint)100;
spraydata.sprayarrval = buf;
clnt = clntcreate("somehost", SPRAYPROG, SPRAYVERS, "netpath");
if (clnt == (CLIENT *)NULL) {
/* behandle den Fehler */
}
if (clntcall(clnt, SPRAYPROCCLEAR,
xdrvoid, NULL, xdrvoid, NULL, timeout25)) {
/* behandle den Fehler */
}
while (loop-- > 0) {
if (clntcall(clnt, SPRAYPROCSPRAY,
xdrsprayarr, &spraydata, xdrvoid, NULL, timeout0)) {
/* behandle den Fehler */
}
}
if (clntcall(clnt, SPRAYPROCGET,
xdrvoid, NULL, xdrspraycumul, &sprayresult, timeout25)) {
/* behandle den Fehler */
}
printf("Bestätigt %ld von 1000 Paketen in %d Sek. %d usecs\n",
sprayresult.counter,
sprayresult.clock.sec,
sprayresult.clock.usec);
SIEHE AUCH
spray(1M), sprayd(1M), rpcclntcalls(3N).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98