Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ spray(3N) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

spray(1M)

sprayd(1M)

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

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026