jammy (2) connect.2.gz

Provided by: manpages-de-dev_4.13-4_all bug

BEZEICHNUNG

       connect - eine Verbindung mit einem Socket starten

ÜBERSICHT

       #include <sys/types.h>          /* Siehe ANMERKUNGEN */
       #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 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.

              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

       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.

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