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

Linux                                          15. September 2017                                     CONNECT(2)