accept(3N-xs) (X/OPEN SOCKETS) accept(3N-xs)
NAME
accept - Auf die Verbindunganforderung eines Client-Prozesses warten
SYNTAX
cc [flag ...] file ... -lxnet [library ...]
#include <sys/socket.h>
int accept(int socket, struct sockaddr *address,
sizet *addresslen);
BESCHREIBUNG
Die Funktion accept extrahiert die erste Verbindung aus der Wartesch-
lange anstehender Verbindungen, erstellt einen neuen Socket mit dem-
selben Protokolltyp und derselben Adreßfamilie wie der angegebene Sok-
ket und ordnet diesem Socket einen neuen Dateideskriptor zu.
Für die Funktion können folgende Argumente angegeben werden:
socket Gibt einen Socket an, der mit socket erstellt wurde,
mit bind an eine Adresse gebunden wurde und einen
erfolgreichen Aufruf an listen ausgegeben hat.
address Entweder ein Null-Zeiger oder ein Zeiger auf eine
sockaddr-Struktur, bei der die Adresse des die Verbin-
dung aufbauenden Sockets zurückgegeben wird.
addresslen Zeigt auf eine Größe sizet, die bei der Eingabe die
Länge der angegebenen sockaddr-Struktur und bei der
Ausgabe die Länge der gespeicherten Adresse angibt.
Wenn address kein Null-Zeiger ist, wird die Adresse des Partners für
die empfangene Verbindungsanforderung in der sockaddr-Struktur gespei-
chert, auf die address zeigt, und die Länge dieser Adresse wird in dem
Objekt gespeichert, auf das addresslen zeigt.
Überschreitet die tatsächliche Länge der Adresse die der angegebenen
sockaddr-Struktur, wird die gespeicherte Adresse abgeschnitten.
Läßt das Protokoll Verbindungen von ungebundenen Clients zu, und ist
der Partner nicht gebunden, wird der in dem Objekt gespeicherte Wert,
auf das address zeigt, nicht näher spezifiziert.
Wenn die Warteschlange von listen keine Verbindungsanforderungen ent-
hält und ONONBLOCK im Dateideskriptor für den Socket nicht gesetzt
ist, blockiert accept den Prozeß so lange, bis eine Verbindungsanfor-
derung eingeht. Wenn die Warteschlange von listen keine Verbindungsan-
forderungen enthält und ONONBLOCK im Dateideskritor für den Socket
gesetzt ist, schlägt accept fehl, und errno wird auf EWOULDBLOCK oder
EAGAIN gesetzt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
accept(3N-xs) (X/OPEN SOCKETS) accept(3N-xs)
Der neu erstellte Socket kann selbst keine weiteren Verbindungen
annehmen. Der ursprüngliche Socket bleibt offen und kann weitere Ver-
bindungen annehmen.
RÜCKGABEWERT
accept gibt bei erfolgreicher Ausführung den nichtnegativen Dateide-
skriptor des neu erstellten Sockets zurück. Andernfalls wird -1
zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.
FEHLER
Die Funktion accept schlägt fehl, wenn eine der folgenden Bedingungen
zutrifft:
EBADF Das Argument socket ist kein gültiger Dateideskriptor.
ECONNABORTED Eine Verbindung wurde abgebrochen.
ENOTSOCK Das Argument socket verweist nicht auf einen Socket.
EOPNOTSUPP Der Socket-Typ des angegebenen Sockets unterstützt
keine Annahme von Verbindungsanforderungen.
EAGAIN oder EWOULDBLOCK
Für den Dateideskriptor des Sockets ist ONONBLOCK
angegeben, und es liegen keine Verbindungsanforderun-
gen zum Empfangen vor.
EINTR Die Funktion accept wurde durch ein Signal unterbro-
chen, das vor Eingang einer gültigen Verbindungsanfor-
derung aufgefangen wurde.
EINVAL Der socket akzeptiert keine Verbindungsanforderungen.
EMFILE {OPENMAX} Dateideskriptoren sind zur Zeit im aufru-
fenden Prozeß geöffnet.
ENFILE Die maximale Anzahl von Dateideskriptoren, die im
System zulässig ist, ist bereits geöffnet.
Die Funktion accept kann fehlschlagen, wenn eine der folgenden Bedin-
gungen zutrifft:
ENOMEM Der verfügbare Speicher reicht für die Ausführung der
Operation nicht aus.
ENOBUFS Es ist kein Pufferplatz verfügbar.
ENOSR Die verfügbaren STREAMS-Ressourcen reichen für die
Ausführung der Operation nicht aus.
EPROTO Es ist ein Protokollfehler aufgetreten; möglicherweise
wurde der STREAMS-Protokoll-Stack nicht initialisiert.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
accept(3N-xs) (X/OPEN SOCKETS) accept(3N-xs)
ANWENDUNGSZWECK
Wenn eine Verbindung verfügbar ist, zeigt select an, daß der Dateide-
skriptor für den Socket nun gelesen werden kann.
SIEHE AUCH
bind(3N-xs), connect(3N-xs), listen(3N-xs), socket(3N-xs).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98