Provided by: manpages-de-dev_1.4-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.

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

       EAGAIN Fehlende freie lokale Ports oder unzureichende Einträge im »Routing Cache«. Für AF_INET siehe  die
              Beschreibung  von /proc/sys/net/ipv4/ip_local_port_range; ip(7) für Informationen zur Erhöhung der
              Anzahl der lokalen Ports.

       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 ist nicht einem Socket zugeordnet.

       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

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

ANMERKUNGEN

       POSIX.1-2001  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).

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

       This page is part of release 3.54 of the Linux man-pages project.  A  description  of  the  project,  and
       information about reporting bugs, can be found at 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>.

Linux                                           3. Dezember 2008                                      CONNECT(2)