Provided by: manpages-de-dev_2.16-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 Für nicht blockierende UNIX-Domain-Sockets ist der Socket nicht  blockierend  und  die  Verbindung
              kann  nicht  sofort vollzogen werden. Für andere Socket-Familien gibt es unzureichende Einträge in
              dem 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.
              (UNIX-Domain-Sockets  schlagen  stattessen  mit  EAGAIN  fehl.)  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 (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) abgeschlossen wurde.

       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  5.03  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 Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>
       und Helge Kreutzmann <debian@helgefjell.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>.