Provided by: manpages-de-dev_1.4-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.

       EAFNOSUPPORT
              Die  übergebene  Adresse  hatte  nicht  die  korrekte  Adressfamilie  in ihrem Feld
              sa_family.

       EAGAIN Fehlende freie lokale Ports oder unzureichende Einträge  im  »Routing  Cache«.  Für
              AF_INET  siehe  die  Beschreibung von /proc/sys/net/ipv4/ip_local_port_range; ip(7)
              für Informationen zur Erhöhung der Anzahl der lokalen Ports.

       EALREADY
              Das Socket ist nicht blockierend und ein  vorhergehender  Verbindungsversuch  wurde
              noch nicht beendet.

       EBADF  Der Dateideskriptor ist kein gültiger Index in der Deskriptorentabelle.

       ECONNREFUSED
              Niemand wartet auf der Adresse in der Ferne.

       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 ist nicht einem Socket zugeordnet.

       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

       SVr4, 4.4BSD, (die Funktion connect() erschien erstmalig in 4.2BSD), POSIX.1-2001.

ANMERKUNGEN

       POSIX.1-2001 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.

       Das dritte Argument von connect() ist tatsächlich ein int (und das  haben  auch  4.x  BSD,
       Libc4 und Libc5). Einige POSIX-Verwirrung führt zu dem derzeitigen socklen_t, der auch von
       Glibc verwandt wird. Sehe auch accept(2).

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

       This page is part of release 3.54 of the Linux man-pages project.  A  description  of  the
       project,     and    information    about    reporting    bugs,    can    be    found    at
       http://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>.