Provided by: manpages-de-dev_1.4-1_all 

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>.
Linux 3. Dezember 2008 CONNECT(2)