Provided by: manpages-de-dev_0.5-4.1ubuntu1_all bug

BEZEICHNUNG

       accept - nimmt eine Verbindung auf einem Socket an

BEZEICHNUNG

       #include <sys/types.h>

       #include <sys/socket.h>

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

BESCHREIBUNG

       Der  Parameter  s ist ein Socket, der mit socket(2), erzeugt wurde, mit
       bind(2)  an  eine  Adresse  gebunden  wird  und   mit   listen(2)   auf
       Verbindungen   wartet.   Die  Funktion  accept  extrahiert  den  ersten
       Verbindungswunsch aus der Warteschlange der  ankommenden  Verbindungen,
       erzeugt  einen  neuen  Socket  mit den gleichen Eigenschaften von s und
       alloziiert einen neue Deskriptor für den Socket.  Wenn  keine  wartende
       Verbindung  vorhanden  ist  und  der Socket nicht als nicht-blockierend
       markiert  ist,  blockiert  accept  den  aufrufenden  Prozess  bis  eine
       Verbindung  vorhanden  ist.   Wenn  der  Socket  als  nicht-blockierend
       markiert ist und keine  wartenden  Verbindungen  vorhanden  sind,  gibt
       accept  eine Fehlermeldung, wie sie unten beschrieben ist, zurück.  Der
       akzeptierte Socket kann nicht mehr  für  weitere  Verbindungen  benutzt
       werden.  Der Originalsocket s bleibt offen.

       Das  Argument  addr  ist ein Rückgabeparameter, das mit der Adresse der
       verbindenden Einheit gefüllt wird, wie  sei  der  Kommunikationsschicht
       bekannt  ist. Das exakte Format des addr Parameters wird von der Domain
       festgelegt, in der die Kommunikation stattfindet. Die Variable  addrlen
       ist   ein  Rückgabeparameter,  sie  sollte  anfangs  die  Anzahl  Bytes
       enthalten auf die addr zeigt; bei der Rückgabe enthält es die  aktuelle
       Länge    der    Adresse   (in   Bytes).    Dieser   Aufruf   wird   bei
       verbindungsbasierten Sockettypen benutzt, momentan  in  Verbindung  mit
       SOCK_STREAM.

       Es  ist  möglich,  einen  Socket  mit select(2) aufzumachen, um ihn mit
       einem accept zum Lesen zu benutzen.

       Bei bestimmten Protokollen, die explizite  Bestätigung  verlangen,  wie
       ISO  oder  DATAKIT,  kann davon ausgegangen werden, dass accept nur die
       nächste Verbindung aus der Warteschlange holt ohne sie  automatisch  zu
       bestätigen.    Die   Bestätigung   kann   ein   normaler   Lese-   oder
       Schreibvorgang auf dem neuen Deskriptor mit sich bringen, eine Ablehung
       kann impliziert werden durch ein Schließen des neuen Sockets.

       Man  kann  die  Daten  einer  Verbindungsanforderung  ohne  Bestätigung
       erhalten, indem man einen recvmsg(2) Aufruf absetzt mit einer auf  null
       gesetzten  msg_iovlen  un einem msg_controllen ungleich null oder durch
       Aufruf von getsockopt(2).  Analog dazu kann  man  die  Ablehnung  einer
       Benutzerverbindung   erzeugen,   indem   man  sendmsg(2)  nur  mit  den
       Kontrollinformationen aufruft oder durch setsockopt(2).

RÜCKGABEWERTE

       Die Funktion gibt bei Fehlern -1 zurück. Wenn  der  Aufruf  erfolgreich
       war,  gibt  sie  einen positiven Integerwert zurück, der der Deskriptor
       für den aktzeptierten Socket ist.

FEHLER

       EBADF  Der Deskriptor ist ungültig.

       ENOTSOCK
              Der Deskriptor referenziert eine Datei und keinen Socket.

       EOPNOTSUPP
              Der referenzierte Socket ist nicht vom Typ SOCK_STREAM.

       EFAULT Der Parameter addr ist kein beschreibbarer Teil des  Adressraums
              des Prozesses.

       EWOULDBLOCK
              Der  Socket  ist  als  nicht-blockierend  markiert, aber es sind
              keine zu akzeptierenden Verbindungen vorhanden.

GESCHICHTE

       Die Funktion accept erschien in BSD 4.2.

SIEHE AUCH

       bind(2), connect(2), listen(2), select(2), socket(2).