Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ getsockopt(3N) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ioctl(2)

socket(3N)

getprotoent(3N)

ip(7)

getsockopt(3N)                                               getsockopt(3N)

NAME
     getsockopt, setsockopt - Socket-Optionen abfragen und setzen

SYNTAX
     #include <sys/types.h>
     #include <sys/socket.h>

     int getsockopt(int s, int level, int optname,
                         char *optval, int *optlen);

     int setsockopt(int s, int level, int optname,
                         char *optval, int optlen);

BESCHREIBUNG
     getsockopt() und setsockopt() manipulieren Optionen, die zu einem
     Socket gehören. Es gibt Optionen auf mehreren Protokollebenen, immer
     jedoch auf der Socket-Ebene.

     Bei der Manipulation von Socket-Optionen müssen die Ebene, zu der die
     Option gehört, und der Name der Option angegeben werden. Um Optionen
     auf der Socket-Ebene zu manipulieren, ist level durch SOLSOCKET spe-
     zifiziert. Um Optionen auf jeder anderen Ebene zu manipulieren, ist
     level die Protokollnummer des Protokolls, das die Option verarbeitet.
     Um z. B. anzuzeigen, daß eine Option durch das TCP-Protokoll interpre-
     tiert werden soll, wird level auf die TCP-Protokollnummer gesetzt
     [siehe getprotoent(3N)].

     Die Parameter optval und optlen werden für den Zugriff auf Options-
     werte für setsockopt() verwendet. Für getsockopt() identifizieren sie
     einen Puffer, in dem der Wert (die Werte) für die angefragte(n)
     Option(en) zurückgegeben werden soll(en). Für getsockopt() ist optlen
     ein Ergebnisparameter, der anfangs mit der Größe des Puffers optval
     initialisiert wird und bei Rückkehr des Aufrufs die tatsächliche Größe
     von optval anzeigt. Falls kein Optionswert angegeben oder zurückgege-
     ben werden soll, kann optval auf 0 gesetzt werden.

     optname und jede der angegebenen Optionen werden uninterpretiert an
     das entsprechende Protokollmodul zur Interpretation übergeben. Die
     Include-Datei /usr/include/sys/socket.h enthält Definitionen für die
     unten beschriebenen Optionen der Socket-Ebene SOLSOCKET. Optionen auf
     anderen Protokollebenen variieren in Format und Name.

     Die meisten Optionen der Socket-Ebene erwarten eine Ganzzahl für
     optval. Für setsockopt() sollte der Parameter optval ungleich Null
     sein, um eine boolesche Option zu ermöglichen, und er sollte gleich
     Null sein, wenn die Option abgeschaltet werden soll. Bei SOLINGER
     verweist optval auf eine Struktur struct linger, die den gewünschten
     Zustand der Option und den Verzögerungswert ("linger" - siehe unten)
     angibt. struct linger ist in /usr/include/sys/socket.h definiert.






Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

getsockopt(3N)                                               getsockopt(3N)

     Die folgenden Optionen sind auf Socket-Ebene (SOLSOCKET) möglich. Bis
     auf einige Ausnahmen, auf die hingewiesen wird, kann jede Option mit
     getsockopt() abgefragt und mit setsockopt() gesetzt werden.

     SODEBUG            Informationsaufzeichnung für die Fehleranalyse
                         (debug)

     SOREUSEADDR        lokale Adreßwiederverwendung

     SOKEEPALIVE        Überprüfen von Verbindungen, auf denen kein Daten-
                         verkehr mehr stattfindet

     SODONTROUTE        Routing von Paketen ein- bzw. ausschalten

     SOLINGER           Verzögerung beim Schließen, wenn Daten vorhanden
                         sind

     SOBROADCAST        Erlaubnis, Broadcast-Nachrichten zu übertragen

     SOOOBINLINE        Behandlung von "out-of-band"-Daten in der Eingabe

     SOSNDBUF           Puffergröße für die Ausgabe

     SORCVBUF           Puffergröße für die Eingabe

     SOTYPE             Typ des Sockets feststellen (nur get)

     SOERROR            Fehlerzustände auf dem Socket feststellen und
                         löschen (nur get)

     SODEBUG ermöglicht die Fehleranalyse in darunterliegenden Protokoll-
     modulen.

     SOREUSEADDR ermöglicht die Wiederverwendung lokaler Adressen im
     bind(3N)-Aufruf.

     SOKEEPALIVE überwacht die Verbindung. Ruht die Verbindung für eine
     gewisse Zeit (d. h., es erfolgt in dieser Zeit kein Nachrichtenaus-
     tausch zwischen den Partnern), so werden periodisch Nachrichten an den
     Partner gesendet. Falls der verbundene Partner aus irgendeinem Grunde
     nicht auf diese Nachrichten antwortet, wird die Verbindung als unter-
     brochen angesehen, und die Prozesse, die auf den Socket zugreifen,
     werden durch ein SIGPIPE-Signal benachrichtigt.

     SODONTROUTE weist das Sytem an, den normalen Routing-Algorithmus zu
     umgehen. In diesem Fall werden Pakete direkt über die Schnittstelle
     gesendet, bei der die Netznummer der Schnittstellen-Adresse mit der
     Netznummer der Empfängeradresse im Paket übereinstimmt.






Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

getsockopt(3N)                                               getsockopt(3N)

     SOLINGER kontrolliert die Aktionen, die unternommen werden, wenn sich
     noch unversendete Nachrichten in der Warteschlange auf dem Socket
     befinden während ein close(2) durchgeführt wird. Wenn der Socket
     sichere Übertragung von Daten gewährleistet (Socket-Typ SOCKSTREAM)
     und SOLINGER gesetzt ist, blockiert das System den Prozeß beim
     close()-Versuch, bis es in der Lage ist, die Daten zu übertragen, oder
     bis es feststellt, daß die Daten nicht mehr gesendet werden können,
     weil z. B. die mit SOLINGER im setsockopt()-Aufruf angegebene maxi-
     male Wartezeit (Linger-Time) abgelaufen ist. Falls SOLINGER nicht
     aktiviert ist und ein close() durchgeführt wird, wenn noch Daten zum
     Senden ausstehen, so kehrt der close()-Aufruf nach kurzer Zeit zurück
     und das System versucht, die ausstehenden Daten im Hintergrund zu sen-
     den.

     Die Option SOBROADCAST fragt ab, ob über den Socket Broadcast-Data-
     gramme versendet werden dürfen.

     Bei Protokollen, die "out-of-band"-Daten unterstützen, veranlaßt die
     Option SOOOBINLINE, daß "out-of-band"-Daten im normalen Datenstrom
     empfangen werden. Auf diese kann dann mit den Aufrufen recv() oder
     read() ohne die Option MSGOOB zugegriffen werden.

     SOSNDBUF und SORCVBUF sind Optionen, die die ursprünglich angelegte
     Puffergröße für die Ein- und Ausgabepuffer anpassen. Die Puffergröße
     kann für Verbindungen vergrößert werden, die große Datenmengen versen-
     den bzw. empfangen. Sie kann aber auch verkleinert werden, um die
     Menge noch nicht bestätigter Daten zu begrenzen. Das System setzt eine
     absolute Grenze für diese Werte.

     Die Optionen SOTYPE und SOERROR werden nur für getsockopt() verwen-
     det. SOTYPE liefert den Typ des Sockets zurück (z. B. SOCKSTREAM).
     Dies ist nützlich für Server, die Sockets bei ihrem Start erben.

     SOERROR liefert am Socket aufgetretene Fehler zurück und löscht den
     Fehlerzustand. Es kann zur Überprüfung asynchroner Fehler auf verbun-
     denden Datagram-Sockets oder für andere asynchrone Fehler verwendet
     werden

RÜCKGABEWERT
     Es wird 0 zurückgeliefert, wenn der Aufruf erfolgreich war, andern-
     falls -1.

DIAGNOSE
     Es können folgende Fehler auftreten:

     EBADF           Das Argument s ist kein gültiger Deskriptor.

     ENOTSOCK        Das Argument s verweist nicht auf einen Socket.

     ENOPROTOOPT     Die Option ist auf der angegebenen Ebene nicht
                     bekannt.



Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

getsockopt(3N)                                               getsockopt(3N)

     ENOMEM          Es war nicht genügend Speicher vorhanden, um die Ope-
                     ration durchzuführen.

     ENOSR           Es waren nicht genügend STREAMS-Betriebsmittel vorhan-
                     den, um die Operation durchzuführen.

SIEHE AUCH
     ioctl(2), socket(3N), getprotoent(3N), ip(7).














































Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

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