socket(3N-xs) (X/OPEN SOCKETS) socket(3N-xs)
NAME
socket - Einen Endpunkt für die Kommunikation erstellen
SYNTAX
cc [flag ...] file ... -lxnet [library ...]
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
BESCHREIBUNG
Die Funktion socket erstellt einen ungebundenen Socket in einer Kommu-
nikationsdomäne und gibt einen Dateideskriptor zurück, der in späteren
Funktionsaufrufen für den Socket verwendet werden kann.
Für die Funktion können folgende Argumente angegeben werden:
domain Gibt die Kommunikationsdomäne an, in der ein Socket
erstellt werden soll.
type Gibt den Typ des zu erstellenden Sockets an.
protocol Gibt ein bestimmtes Protokoll an, das mit dem Socket
verwendet werden soll. Bei Angabe von 0 verwendet
socket ein nicht näher spezifiziertes Standardproto-
koll, das für den angeforderten Socket-Typ geeignet
ist.
Das Argument domain gibt die Adreßfamilie an, die in der Kommunikati-
onsdomäne verwendet wird. Die vom System unterstützten Adreßfamilien
sind von der jeweiligen Implementierung abhängig.
Im Header <sys/socket.h> sind zumindest folgende Werte für das Argu-
ment domain definiert:
AFUNIX Die Pfadnamen des Dateisystems.
AFINET Die Internet-Adresse.
Das Argument type gibt den Socket-Typ an, der die Semantik für die
Kommunikation über den Socket bestimmt. Die vom System unterstützten
Socket-Typen sind von der jeweiligen Implementierung abhängig. Mögli-
che Socket-Typen sind:
SOCKSTREAM Stellt regelmäßige, zuverlässige, bidirektionale, ver-
bindungsorientierte Byte-Streams zur Verfügung; außer-
dem kann ein Mechanismus für die Übertragung von Out-
Of-Band-Daten (Daten außerhalb des normalen Daten-
stroms) verfügbar sein.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
socket(3N-xs) (X/OPEN SOCKETS) socket(3N-xs)
SOCKDGRAM Stellt Datagramme zur Verfügung; hierbei handelt es
sich um nicht gesicherte Meldungen ohne Verbindungen
mit fester Maximallänge.
SOCKSEQPACKET Stellt einen regelmäßigen, zuverlässigen, bidirektio-
nalen, verbindungsorientierten Übertragungspfad für
Sätze zur Verfügung. Ein Satz kann über eine oder meh-
rere Ausgabeoperationen gesendet und über eine oder
mehrere Eingabeoperationen empfangen werden. Eine ein-
zelne Operation kann jedoch keinen Teil von mehreren
Sätzen übertragen. Über das Flag MSGEOR kann sich der
Empfänger die Satzgrenzen anzeigen lassen.
Ist das Argument protocol ungleich Null, muß es ein von der Adreßfami-
lie unterstütztes Protokoll angeben. Die vom System unterstützten Pro-
tokolle sind von der jeweiligen Implementierung abhängig.
RÜCKGABEWERT
Bei erfolgreicher Ausführung gibt socket eine nichtnegative Ganzzahl
(den Dateideskriptor des Sockets) zurück. Andernfalls wird der Wert -1
zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.
FEHLER
Die Funktion socket schlägt fehl, wenn eine der folgenden Bedingungen
zutrifft:
EACCES Der Prozeß verfügt nicht über die erforderlichen
Berechtigungen.
EAFNOSUPPORT Die angegebene Adreßfamilie wird von der Implementie-
rung nicht unterstützt.
EMFILE Für diesen Prozeß stehen keine weiteren Dateideskrip-
toren mehr zur Verfügung.
ENFILE Für das System stehen keine weiteren Dateideskriptoren
mehr zur Verfügung.
EPROTONOSUPPORT Das Protokoll wird entweder von der Adreßfamilie oder
von der Implementierung nicht unterstützt.
EPROTOTYPE Der Socket-Typ wird vom Protokoll nicht unterstützt.
Die Funktion socket kann fehlschlagen, wenn eine der folgenden Bedin-
gungen zutrifft:
ENOBUFS Die im System verfügbaren Ressourcen reichen für die
Ausführung der Operation nicht aus.
ENOMEM Der verfügbare Speicher reicht für die Anforderung
nicht aus.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
socket(3N-xs) (X/OPEN SOCKETS) socket(3N-xs)
ENOSR Die verfügbaren STREAMS-Ressourcen reichen für die
Ausführung der Operation nicht aus.
ANWENDUNGSZWECK
Aus der Dokumentation zu den einzelnen Adreßfamilien geht hervor, wel-
che Protokolle von der jeweiligen Adreßfamilie unterstützt werden. Aus
der Dokumentation zu den einzelnen Protokollen geht hervor, welche
Socket-Typen vom jeweiligen Protokoll unterstützt werden.
Die Anwendung kann feststellen, ob eine Adreßfamilie unterstützt wird,
indem sie versucht einen Socket zu erstellen, bei dem domain auf das
entsprechende Protokoll gesetzt ist.
SIEHE AUCH
accept(3N-xs), bind(3N-xs), connect(3N-xs), getsockname(3N-xs),
getsockopt(3N-xs), listen(3N-xs), recv(3N-xs), recvfrom(3N-xs),
recvmsg(3N-xs), send(3N-xs), sendmsg(3N-xs), setsockopt(3N-xs),
shutdown(3N-xs), socketpair(3N-xs).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98