socket(5) socket(5)
NAME
socket - Internet-Protokollfamilie
SYNTAX
#include <sys/socket.h>
BESCHREIBUNG
Der Header <sys/socket.h> definiert die ganzzahligen Typen ohne Vor-
zeichen von safamilyt bis typedef.
Der Header <sys/socket.h> definiert die Struktur sockaddr, die zumin-
dest die folgenden Member enthält:
safamilyt safamily /* Adreßfamilie */
char sadata[] /* Socket-Adresse (Daten variabler Länge) */
Der Header <sys/socket.h> definiert die Struktur msghdr, die zumindest
die folgenden Komponenten enthält:
void *msgname /* optionale Adresse */
sizet msgnamelen /* Länge der Adresse */
struct iovec *msgiov /* Scatter-/Gather-Array */
int msgiovlen /* Komponenten in msgiov */
void *msgcontrol /* Zusatzdaten, siehe unten */
sizet msgcontrollen /* Pufferlänge für Zusatzdaten */
int msgflags /* Flags zu emfangener Meldung */
Der Header <sys/socket.h> definiert die Struktur cmsghdr, die zumin-
dest die folgenden Komponenten enthält:
sizet cmsglen /* Anzahl der Datenbyte einschl. Header */
int cmsglevel /* urprüngliches Protokoll */
int cmsgtype /* protokollspezifischer Typ */
Zusatzdaten bestehen aus einer Folge von Paaren, die jeweils aus einer
Struktur cmsghdr gefolgt von einem Daten-Array bestehen. Das Daten-
Array enthält die Zusatzdatenmeldung und die Struktur cmsghdr enthält
beschreibende Informationen, anhand derer eine Anwendung die Daten
korrekt analysieren kann.
Die Werte für cmsglevel sind zulässige Werte für das Argument level
der Funktionen getsockopt und setsockopt. Die Systemdokumentation
sollte die cmsgtype-Definitionen für die unterstützten Protokolle
enthalten.
Zusatzdaten sind auch auf Socket-Ebene möglich. Der Header
<sys/socket.h> definiert das folgende Makro zur Verwendung als Wert
cmsgtype, wenn cmsglevel SOLSOCKET ist:
SCMRIGHTS Gibt an, daß das Daten-Array die zu
sendenden/empfangenden Zugriffsrechte enthält.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
socket(5) socket(5)
Der Header <sys/socket.h> definiert die folgenden Makros, um Zugriff
auf die Daten-Arrays der einem Meldungskopf zugeordneten Zusatzdaten
zu erhalten:
CMSGDATA(cmsg) Ist das Argument ein Zeiger auf eine Struktur
cmsghdr, gibt dieses Makro einen Zeichenzeiger
ohne Vorzeichen auf das Daten-Array aus, das der
Struktur cmsghdr zugeordnet ist.
CMSGNXTHDR(mhdr,cmsg)
Ist das erste Argument ein Zeiger auf eine Struk-
tur msghdr und das zweite Argument ein Zeiger auf
eine Struktur cmsghdr in den Zusatzdaten, auf die
über das Feld msgcontrol dieser Struktur msghdr
gezeigt wird, gibt dieses Makro einen Zeiger auf
die nächste Struktur cmsghdr oder einen Null-
Zeiger zurück, wenn es sich bei dieser Struktur um
die letzte Struktur cmsghdr in den Zusatzdaten
handelt.
CMSGFIRSTHDR(mhdr) Ist das Argument ein Zeiger auf eine Struktur
msghdr, gibt dieses Makro einen Zeiger auf die
erste Struktur cmsghdr in den Zusatzdaten zurück,
die dieser Struktur msghdr zugeordnet sind, oder
einen Null-Zeiger, wenn der Struktur msghdr keine
Zusatzdaten zugeordnet sind.
Der Header <sys/socket.h> definiert die Struktur linger, die zumindest
die folgenden Komponenten enthält:
int lonoff /* gibt an, ob die Option "linger" aktiviert ist */
int llinger /* Wartezeit in Sekunden */
Der Header <sys/socket.h> definiert die folgenden Makros mit unter-
schiedlichen ganzzahligen Werten:
SOCKDGRAM Datagramm-Socket
SOCKSTREAM Byte-Stream-Socket
SOCKSEQPACKET Socket für regelmäßige Übertragungspfade
Der Header <sys/socket.h> definiert das folgende Makro zur Verwendung
als Argument level der Funktionen setsockopt und getsockopt.
SOLSOCKET Optionen, auf die auf Socket-Ebene, nicht auf Pro-
tokollebene zugegriffen wird.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
socket(5) socket(5)
Der Header <sys/socket.h> definiert die folgenden Makros mit unter-
schiedlichen ganzzahligen Werten zur Verwendung als Argument
optionname in den Aufrufen von getsockopt und setsockopt:
SODEBUG Testdaten werden aufgezeichnet
SOACCEPTCONN Socket ist empfangsbereit
SOBROADCAST Übertragung von Broadcast-Meldungen wird unter-
stützt
SOREUSEADDR Wiederverwendung lokaler Adressen wird unterstützt
SOKEEPALIVE Verbindungen bleiben durch regelmäßige Übertragung
von Meldungen aktiv
SOLINGER Socket wartet bei Ausgabe von close
SOOOBINLINE Out-of-Band-Daten (als dringend markierte Daten)
werden im normalen Datenstrom übertragen
SOSNDBUF Größe des Sendepuffers
SORCVBUF Größe des Empfangspuffers
SOERROR Socket-Fehlerstatus
SOTYPE Socket-Typ
Der Header <sys/socket.h> definiert die folgenden Makros mit unter-
schiedlichen ganzzahligen Werten zur Verwendung als gültige Werte für
das Feld msgflags in der Struktur msghdr oder für den Flag-Parameter
in den Aufrufen von recvfrom, recvmsg, sendto oder sendmsg:
MSGCTRUNC Steuerdaten werden abgeschnitten
MSGEOR Satzende erreicht (falls vom Protokoll unter-
stützt)
MSGOOB Out-of-Band-Daten
MSGPEEK Empfangene Daten bleiben in der Warteschlange
MSGTRUNC Normale Daten werden abgeschnitten
MSGWAITALL Wartet, bis die gesamte Meldung ausgegeben ist
Der Header <sys/socket.h> definiert die folgenden Makros mit unter-
schiedlichen ganzzahligen Werten:
AFUNIX UNIX Sockets
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
socket(5) socket(5)
AFINET Internet-Sockets
Der Header <sys/socket.h> definiert die folgenden Makros mit unter-
schiedlichen ganzzahligen Werten:
SHUTRD Deaktiviert weitere Empfangsoperationen
SHUTWR Deaktiviert weitere Sendeoperationen
SHUTRDWR Deaktiviert weitere Sende- und Empfangsoperationen
Die folgenden Typen sind als Funktionen deklariert und können auch als
Makros definiert sein:
int accept(int socket, struct sockaddr *address,
sizet *addresslen);
int bind(int socket, const struct sockaddr *address,
sizet addresslen);
int connect(int socket, const struct sockaddr *address,
sizet addresslen);
int getpeername(int socket, struct sockaddr *address,
sizet *addresslen);
int getsockname(int socket, struct sockaddr *address,
sizet *addresslen);
int getsockopt(int socket, int level, int optionname,
void *optionvalue, sizet *optionlen);
int listen(int socket, int backlog);
ssizet recv(int socket, void *buffer, sizet length, int flags);
ssizet recvfrom(int socket, void *buffer, sizet length,
int flags, struct sockaddr *address, sizet *addresslen);
ssizet recvmsg(int socket, struct msghdr *message, int flags);
ssizet send(int socket, const void *message, sizet length, int flags);
ssizet sendmsg(int socket, const struct msghdr *message, int flags);
ssizet sendto(int socket, const void *message, sizet length, int flags,
const struct sockaddr *destaddr, sizet destlen);
int setsockopt(int socket, int level, int optionname,
const void *optionvalue, sizet optionlen);
int shutdown(int socket, int how);
int socket(int domain, int type, int protocol);
int socketpair(int domain, int type, int protocol,
int socketvector[2]);
SIEHE AUCH
accept(3N-xs), bind(3N-xs), connect(3N-xs), getpeername(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),
sendto(3N-xs), setsockopt(3N-xs), shutdown(3N-xs), socket(3N-xs),
socketpair(3N-xs).
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98