Provided by: manpages-de-dev_2.5-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) Das durch sockfd referenzierte Socket war bisher nicht an
              eine Adresse gebunden und beim Versuch, es an einen  kurzlebigen  Port  zu  binden,
              wurde  festgestellt,  dass  alle  Portnummern  in  dem  Portbereich  für kurzlebige
              Portnummern   derzeit   verwendet   werden.   Lesen   Sie   die   Erörterung    von
              /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  sockfd ist kein zulässiger offener Dateideskriptor.

       ECONNREFUSED
              Ein connect() auf einem Stream-Socket fand keinen, der auf der Adresse in der Ferne
              wartete.

       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
              Die Socket-Art unterstützt das  angefragte  Kommunikationsprotokoll  nicht.  Dieser
              Fehler     kann     beispielsweise     bei     dem     Versuch    auftreten,    ein
              UNIX-Domain-Datagramm-Socket mit einem Stream-Socket zu verbinden.

       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, (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.

       Für Hintergrundinformationen zum Typ socklen_t siehe accept(2).

       Falls  connect()  fehlschlägt,  sollten  Sie  den  Zustand  des Sockets als unspezifiziert
       ansehen. Portable  Anwendungen  sollten  das  Socket  schließen  und  ein  neues  für  die
       Wiederverbindung erstellen.

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.15  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 https://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>.