connect(3N-xs) (X/OPEN SOCKETS) connect(3N-xs)
NAME
connect - Eine Verbindung zu einem Socket herstellen
SYNTAX
cc [flag ...] file ... -lxnet [library ...]
#include <sys/socket.h>
int connect(int socket, const struct sockaddr *address,
sizet addresslen);
BESCHREIBUNG
Die Funktion connect fordert die Herstellung einer Verbindung zu einem
Socket an. Für die Funktion können folgende Argumente angegeben wer-
den:
socket Gibt den Dateideskriptor an, der dem Socket zugeordnet
ist.
address Zeigt auf eine sockaddr-Struktur mit der Partner-
Adresse. Länge und Format der Adresse sind von der
Adreßfamilie des Sockets abhängig.
addresslen Gibt die Länge der sockaddr-Struktur an, auf die das
Argument address zeigt.
Wenn der Ausgangs-Socket nicht verbindungsorientiert ist, setzt
connect zwar die Partner-Adresse des Sockets, es wird jedoch keine
Verbindung hergestellt. Bei Sockets des Typs SOCKDGRAM gibt die
Partner-Adresse an, wohin alle Datagramme bei nachfolgenden send-
Aufrufen gesendet werden, und schränkt den fernen Sender für nachfol-
gende recv-Aufrufe ein. Wenn address eine Null-Adresse für das Proto-
koll ist, wird die Partner-Adresse des Sockets zurückgesetzt.
Wenn der Ausgangs-Socket verbindungsorientiert ist, versucht connect,
eine Verbindung zu der vom Argument address angegebenen Adresse herzu-
stellen.
Wenn die Verbindung nicht sofort hergestellt werden kann, und
ONONBLOCK für den Dateideskriptor des Sockets nicht gesetzt ist,
blockiert connect den Prozeß für einen unbestimmten Zeitraum, bis die
Verbindung hergestellt ist. Wenn die zulässige Zeit überschritten
wird, bevor die Verbindung hergestellt werden konnte, schlägt connect
fehl, und der Versuch des Verbindungsaufbaus wird abgebrochen. Wird
connect durch ein Signal unterbrochen, das aufgefangen wurde, während
die Funktion blockiert war (da sie auf die Herstellung einer Verbin-
dung wartete), schlägt connect fehl und setzt errno auf EINTR. Hierbei
wird die Verbindungsanforderung jedoch nicht abgebrochen, und die Ver-
bindung wird asynchron hergestellt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
connect(3N-xs) (X/OPEN SOCKETS) connect(3N-xs)
Wenn die Verbindung nicht direkt hergestellt werden kann, und
ONONBLOCK für den Dateideskriptor des Sockets gesetzt ist, schlägt
connect fehl und setzt errno auf EINPROGRESS. Hierbei wird die Verbin-
dungsanforderung jedoch nicht abgebrochen, und die Verbindung wird
asynchron hergestellt. Nachfolgende connect-Aufrufe für denselben
Socket, die vor Herstellung der Verbindung erfolgen, schlagen fehl,
wobei errno auf EALREADY gesetzt wird.
Wenn die Verbindung asynchron hergestellt wurde, zeigen select und
poll an, daß der Dateideskriptor für den Socket nun geschrieben werden
kann.
RÜCKGABEWERT
Bei erfolgreicher Ausführung gibt connect 0 zurück. Andernfalls wird
-1 zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.
FEHLER
Die Funktion connect schlägt fehl, wenn eine der folgenden Bedingungen
zutrifft:
EADDRNOTAVAIL Auf die angegebene Adresse kann von der lokalen
Maschine aus nicht zugegriffen werden.
EAFNOSUPPORT Die angegebene Adresse ist für die Adreßfamilie des
angegebenen Sockets nicht gültig.
EALREADY Für den angegebenen Socket läuft bereits eine Verbin-
dungsanforderung.
EBADF Das Argument socket ist kein gültiger Dateideskriptor.
ECONNREFUSED Die Zieladresse ist für Verbindungen nicht empfangsbe-
reit oder verweigert die Verbindungsanforderung.
EINPROGRESS Für den Dateideskriptor des Sockets ist ONONBLOCK
gesetzt, und die Verbindung kann nicht sofort herge-
stellt werden. Die Verbindung wird asynchron herge-
stellt.
EINTR Der Verbindungsaufbau wurde durch ein aufgefangenes
Signal unterbrochen. Die Verbindung wird asynchron
hergestellt.
EISCONN Der angegebene Socket ist verbindungsorientiert und es
besteht bereits eine Verbindung.
ENETUNREACH Das Netz ist nicht erreichbar.
ENOTSOCK Das Argument socket verweist nicht auf einen Socket.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
connect(3N-xs) (X/OPEN SOCKETS) connect(3N-xs)
EPROTOTYPE Der Typ der angegebenen Adresse stimmt nicht mit dem
Socket überein, der mit der angegebenen Partner-
Adresse ist.
ETIMEDOUT Die für den Verbindungsaufbau zulässige Zeit ist abge-
laufen, bevor die Verbindung hergestellt werden
konnte.
Ist die Adreßfamilie des Sockets AFUNIX, schlägt connect fehl, wenn
eine der folgenden Bedingungen zutrifft:
ENOTDIR Eine Komponente in der Pfadangabe von address ist kein
Verzeichnis.
ENAMETOOLONG Eine Komponente eines Pfadnamens überschreitet
{NAMEMAX} Zeichen, oder ein ganzer Pfadname ist län-
ger als {PATHMAX} Zeichen.
EACCES Für eine Komponente in der Pfadangabe wird die Suchbe-
rechtigung verweigert, oder der Schreibzugriff auf den
angegebenen Socket wird verweigert.
EIO Beim Lesen aus dem oder Schreiben in das Dateisystem
ist ein E/A-Fehler aufgetreten.
ELOOP Bei der Übersetzung des Pfadnamens in address wurden
zu viele symbolische Links gefunden.
ENOENT Eine Komponente des Pfadnamens verweist nicht auf eine
vorhandene Datei, oder der Pfadname ist leer.
Die Funktion connect kann fehlschlagen, wenn eine der folgenden Bedin-
gungen zutrifft:
EADDRINUSE Es wurde versucht, eine Verbindung herzustellen, die
bereits belegte Adressen verwendet.
ECONNRESET Die Verbindungsanforderung wurde vom fernen Host
zurückgesetzt.
EHOSTUNREACH Der Ziel-Host kann nicht erreicht werden (möglicher-
weise weil er heruntergefahren ist, oder weil er von
einem fernen Router nicht erreicht werden kann).
EINVAL Die Länge des Arguments addresslen ist für die Adreß-
familie nicht gültig, oder die Adreßfamilie in der
sockaddr-Struktur ist ungültig.
ENAMETOOLONG Durch die Auflösung des Pfadnamens eines symbolischen
Links wird ein Zwischenergebnis erzeugt, dessen Länge
{PATHMAX} überschreitet.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
connect(3N-xs) (X/OPEN SOCKETS) connect(3N-xs)
ENETDOWN Die lokale Schnittstelle, über die der Ziel-Host
erreicht wird, ist nicht aktiviert.
ENOBUFS Es ist kein Pufferplatz verfügbar.
ENOSR Die verfügbaren STREAMS-Ressourcen reichen für die
Ausführung der Operation nicht aus.
EOPNOTSUPP Der Socket ist empfangsbereit, und es kann keine Ver-
bindung hergestellt werden.
ANWENDUNGSZWECK
Wenn connect fehlschlägt, ist der Status des Sockets nicht angegeben.
Bei portierbaren Anwendungen sollte vor einem erneuten Verbindungsver-
such der Dateideskriptor geschlossen und ein neuer Socket erstellt
werden.
SIEHE AUCH
close(2), poll(2), select(3C), accept(3N-xs), bind(3N-xs),
getsockname(3N-xs), send(3N-xs), shutdown(3N-xs), socket(3N-xs).
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98