Provided by: manpages-de-dev_1.11-1_all bug

BEZEICHNUNG

       connect - eine Verbindung mit einem Socket starten

ÜBERSICHT

       #include <sys/types.h>          /* Siehe ANMERKUNGEN */
       #include <sys/socket.h>

       int connect(int sockfd, const struct sockaddr *addr,
                   socklen_t addrlen);

BESCHREIBUNG

       Der  Systemaufruf  connect()  verbindet das durch den Dateideskriptor sockfd referenzierte
       Socket mit der durch addr angegebenen Adresse. Das Argument addrlen  legt  die  Größe  von
       addr  fest.  Das  Format  der Adresse in addr wird durch den Adressraum des Sockets sockfd
       festgelegt; siehe socket(2) für weitere Details.

       Falls das Socket sockfd vom Typ SOCK_DGRAM ist, dann werden  Datagramme  standardmäßig  an
       die  Adresse  addr  gesendet  werden  und auch nur von dieser Adresse empfangen. Falls das
       Socket vom Typ SOCK_STREAM oder SOCK_SEQPACKET ist, versucht dieser Aufruf eine Verbindung
       mit dem Socket herzustellen das an die angebene Adresse addr gebunden ist.

       Generell  können  verbindungsbasierte  Protokoll-Sockets  connect() nur einmal erfolgreich
       aufrufen; verbindungslose Protokoll-Sockets können connect()  mehrmals  aufrufen  um  ihre
       Zuordnungen  zu ändern. Verbindungslose Sockets können ihre Zuordnung lösen, indem sie bei
       der Verbindung mit einer Adresse die  Komponente  sa_family  von  sockaddr  auf  AF_UNSPEC
       setzen (unter Linux seit Kernel 2.2 unterstützt).

RÜCKGABEWERT

       Falls  die  Verbindung oder das Anbinden gelingt, wird Null zurückgeliefert. Im Fehlerfall
       wird -1 zurückgeliefert und errno entsprechend gesetzt.

FEHLER

       Die folgenden Fehler sind nur allgemeine Socket-Fehler. Es mag andere,  domänenspezifische
       Fehlercodes geben.

       EACCES Für  UNIX-Domain-Sockets,  die  durch einen Pfadnamen identifiziert werden: Auf die
              Socket-Datei wurde das Schreiben nicht gestattet  oder  das  Suchen  in  einer  der
              Dateien des Pfad-Präfixes wurde verwehrt (siehe auch path_resolution(7)).

       EACCES, EPERM
              Der  Benutzer  versuchte  eine  Verbindung  zu  einer  Broadcast-Adresse,  ohne den
              Socket-Broadcast-Schalter aktiviert zu haben oder die Verbindungsanfrage scheiterte
              wegen einer lokalen Firewall-Regel.

       EADDRINUSE
              Die lokale Adresse ist bereits in Benutzung.

       EADDRNOTAVAIL
              (Internet domain sockets)  The socket referred to by sockfd had not previously been
              bound to an address and, upon attempting to bind it to an ephemeral  port,  it  was
              determined  that all port numbers in the ephemeral port range are currently in use.
              See the discussion of /proc/sys/net/ipv4/ip_local_port_range in ip(7).

       EAFNOSUPPORT
              Die übergebene Adresse  hatte  nicht  die  korrekte  Adressfamilie  in  ihrem  Feld
              sa_family.

       EAGAIN Unzureichende Einträge im Routing-Zwischenspeicher.

       EALREADY
              Das  Socket  ist  nicht blockierend und ein vorhergehender Verbindungsversuch wurde
              noch nicht beendet.

       EBADF  Der Dateideskriptor ist kein gültiger Index in der Deskriptorentabelle.

       ECONNREFUSED
              Niemand wartet auf der Adresse in der Ferne.

       EFAULT Die Adresse der Socket-Struktur liegt außerhalb des Adressraums des Benutzers.

       EINPROGRESS
              Der Socket ist nichtblockierend und die  Verbindung  kann  nicht  sofort  aufgebaut
              werden.  Der Socket kann zum Schreiben ausgewählt werden und mittels select(2) oder
              poll(2)  die  erfolgreiche  Verbindung  abgefragt  werden.  Nachdem  select(2)  die
              Beschreibbarkeit  anzeigt,  lesen sie mit getsockopt(2) die SO_ERROR-Option auf der
              Ebene SOL_SOCKET, um festzustellen ob  connect()  erfolgreich  abgeschlossen  wurde
              (SO_ERROR   ist  Null)  oder  erfolglos  (SO_ERROR  ist  einer  der  üblichen  hier
              aufgeführten Fehlercodes, welche die Gründe für das Scheitern angeben).

       EINTR  Der Systemaufruf wurde durch ein abgefangenes Signal unterbrochen; siehe signal(7).

       EISCONN
              Der Socket ist bereits verbunden.

       ENETUNREACH
              Das Netz ist nicht erreichbar.

       ENOTSOCK
              Der Dateideskriptor sockfd zeigt nicht auf ein Socket.

       EPROTOTYPE
              The socket type does not support the requested communications protocol. This  error
              can occur, for example, on an attempt to connect a UNIX domain datagram socket to a
              stream socket.

       ETIMEDOUT
              Zeitüberschreitung (timeout) während des versuchten Verbindungsaufbaus. Der  Server
              ist  vielleicht  zu beschäftigt um neue Verbindungen aufzubauen. Beachten Sie, dass
              für IP-Sockets das Timeout sehr lang sein kann, wenn auf  dem  Server  »Syncookies«
              aktiviert sind.

KONFORM ZU

       POSIX.1-2001,  POSIX.1-2008,  SVr4,  4.4BSD, (die Funktion connect() erschien erstmalig in
       4.2BSD).

ANMERKUNGEN

       POSIX.1 erfordert nicht, dass <sys/types.h> eingebunden wird. Diese  Header-Datei  ist  in
       Linux  nicht erforderlich. Allerdings benötigen einige historische Implementierungen (BSD)
       diese Header-Datei. Es wird empfohlen, sie für portierbare Anwendungen einzubinden.

       Das dritte Argument von connect() ist tatsächlich ein int (und das  haben  auch  4.x  BSD,
       Libc4 und Libc5). Einige POSIX-Verwirrung führt zu dem derzeitigen socklen_t, der auch von
       Glibc verwandt wird. Sehe auch accept(2).

       If  connect()   fails,  consider  the  state  of  the  socket  as  unspecified.   Portable
       applications should close the socket and create a new one for reconnecting.

BEISPIEL

       Ein Beispiel für die Verwendung von connect() wird in getaddrinfo(3) vorgestellt.

SIEHE AUCH

       accept(2), bind(2), getsockname(2), listen(2), socket(2), path_resolution(7)

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  4.04  des  Projekts  Linux-man-pages. Eine
       Beschreibung des Projekts, Informationen, wie Fehler  gemeldet  werden  können  sowie  die
       aktuelle Version dieser Seite finden sich unter http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die    deutsche    Übersetzung   dieser   Handbuchseite   wurde   von   Helge   Kreutzmann
       <debian@helgefjell.de> und Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version   3  oder  neuer  bezüglich  der  Copyright-Bedingungen.  Es  wird  KEINE  HAFTUNG
       übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an <debian-l10n-german@lists.debian.org>.