Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ accept(3N) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

select(3C)

bind(3N)

connect(3N)

listen(3N)

socket(3N)

netconfig(4)

accept(3N)                                                       accept(3N)

NAME
     accept - Verbindung auf einem Socket annehmen

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

     int accept(int s, struct sockaddr *addr, int *addrlen);

BESCHREIBUNG
     Das Argument s bezeichnet einen Socket, der mit socket(3N) erzeugt,
     mit bind(3N) an eine Adresse gebunden wurde und nach einem Aufruf von
     listen(3N) Verbindungswünsche entgegennimmt. accept() nimmt den ersten
     Verbindungswunsch aus der Schlange der noch nicht bearbeiteten Verbin-
     dungswünsch heraus, erzeugt einen neuen Socket mit den Attributen von
     s und legt einen neuen Dateideskriptor für den Socket an. Falls keine
     unbearbeiteten Verbindungswünsche in der Schlange sind und der Socket
     nicht als "nicht-blockierend" gekennzeichnet ist, blockiert accept()
     den aufrufenden Prozeß, bis eine Verbindung vorhanden ist. Wenn der
     Socket als "nicht-blockierend" markiert ist und keine unbearbeiteten
     Verbindungswünsche in der Schlange stehen, liefert accept() einen Feh-
     ler zurück. Dies wird weiter unten noch genauer beschrieben.

     accept() stellt mit Hilfe der Datei netconfig(4) den STREAMS-Geräte-
     dateinamen fest, der mit s verbunden ist. Dies ist das Gerät, auf dem
     der Verbindungswunsch angenommen wird. Der von accept() neu erzeugte
     Socket dient dem Datenaustausch. Über ihn können keine weiteren Ver-
     bindungen angenommen werden. Der ursprüngliche Socket (s) bleibt für
     die Annahme weiterer Verbindungen geöffnet.

     Das Argument addr ist ein Ergebnisparameter, der die Adresse des Part-
     ners enthält. Das genaue Format des Parameters addr wird durch die
     Adreßfamilie festgelegt, zu der der Socket gehört.

     addrlen ist ein Parameter, der einen Ergebniswert enthält. Anfangs
     enthält er die Größe des Speichers, auf den addr zeigt. Bei der Rück-
     kehr enthält er die Länge der zurückgelieferten Adresse in Bytes.

     accept() wird mit verbindungsorientierten Socket-Typen (SOCKSTREAM)
     verwendet.

     Man kann auch mit select(3C) feststellen, ob am Socket ein Verbin-
     dungswunsch ansteht, und danach einen accept()-Aufruf durchführen.
     Beim select(3C)-Aufruf muß der Socket auf "Lesen" hin überprüft wer-
     den. Wird ein "Lese"-Ereignis angezeigt, so bedeutet dies, daß ein
     Verbindungswunsch ansteht. Der Verbindungswunsch kann dann mit
     accept() angenommen werden.

RÜCKGABEWERT
     accept() liefert bei einem Fehler -1 zurück. Im Erfolgsfall liefert es
     eine nicht-negative Ganzzahl zurück, die der Deskriptor für den akzep-
     tierten Socket ist.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

accept(3N)                                                       accept(3N)

DIAGNOSE
     accept() schlägt in folgenden Fällen fehl:

     EBADF           Der Deskriptor ist ungültig.

     ENOTSOCK        Der Deskriptor verweist nicht auf einen Socket.

     EOPNOTSUPP      Der Socket, auf den verwiesen wird, ist nicht vom Typ
                     SOCKSTREAM.

     EWOULDBLOCK     Der Socket ist als nichtblockierend markiert und es
                     sind keine anzunehmenden Verbindungen vorhanden.

     EPROTO          Es ist ein Protokollfehler aufgetreten, z. B. wenn der
                     STREAMS-Protokollstack nicht initialisiert wurde.

     ENODEV          Die Protokollfamilie und der Typ, der s entspricht,
                     konnte in der Datei netconfig nicht gefunden werden.

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

     ENOSR           Es waren nicht genügend STREAMS-Betriebsmittel verfüg-
                     bar, um die Operation durchzuführen.

SIEHE AUCH
     select(3C), bind(3N), connect(3N), listen(3N), socket(3N),
     netconfig(4).


























Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

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