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