Provided by: manpages-de-dev_4.15.0-9_all bug

BEZEICHNUNG

       connect - eine Verbindung mit einem Socket starten

ÜBERSICHT

       #include <sys/socket.h>

       int connect(int Sockdd, const struct sockaddr *Adr,
                   socklen_t Adrlän);

BESCHREIBUNG

       Der  Systemaufruf  connect()  verbindet das durch den Dateideskriptor Sockdd referenzierte
       Socket mit der durch Adr angegebenen Adresse. Das Argument Adrlän legt die Größe  von  Adr
       fest.  Das  Format  der  Adresse  in  Adr  wird  durch  den  Adressraum des Sockets Sockdd
       festgelegt; siehe socket(2) für weitere Details.

       Falls das Socket Sockdd vom Typ SOCK_DGRAM ist, dann werden  Datagramme  standardmäßig  an
       die  Adresse  Adr  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 Adr gebunden ist.

       Sockets  für  einige  Protokolle  (z.B.  UNIX-Domain-Datenstrom-Sockets) können nur einmal
       erfolgreich connect() durchführen.

       Sockets für einige Protokolle (z.B. Datagram-Sockets in den  UNIX-  und  Internet-Domains)
       können connect() mehrfach verwenden, um ihre Zuordnung zu ändern.

       Sockets  für  einige  Protokolle (z.B. TCP-Sockets sowie Datagram-Sockets in den UNIX- und
       Internet-Domains) können ihre Zuordnung lösen, indem  sie  mit  einer  Adresse  verbinden,
       wobei  das Mitglied sa_family von sockaddr auf AF_UNSPEC gesetzt ist. Danach kann sich der
       Socket mit einer anderen Adresse verbinden (AF_UNSPEC wird 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 gesetzt, um den Fehler anzuzeigen.

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.

              EACCES   kann   auch  zurückgegeben  werden,  falls  eine  SELinux-Richtlinie  eine
              Verbindung verweigerte (falls es beispielsweise eine Richtlinie gibt,  die  regelt,
              dass  ein  HTTP-Proxy  sich  nur  mit  Ports  verbinden kann, die einem HTTP-Server
              zugeordnet sind, und der Proxy versucht, sich auf einen anderen Port zu verbinden).

       EADDRINUSE
              Die lokale Adresse ist bereits in Benutzung.

       EADDRNOTAVAIL
              (Internet Domain Sockets) Das durch sockdd 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  Sockdd 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 sockdd 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

       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.

BEISPIELE

       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), selinux(8)

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  5.13  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>, Helge Kreutzmann <debian@helgefjell.de> und  Mario  Blättermann
       <mario.blaettermann@gmail.com> erstellt.

       Diese  Übersetzung  ist  Freie  Dokumentation;  lesen  Sie  die GNU General Public License
       Version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 die Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.