Socket-Subroutine

Zweck

Erstellt einen Endpunkt für die Kommunikation und gibt einen Deskriptor zurück

Bibliothek

Standard-C-Bibliothek (libc.a)

Syntax

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
int socket ( AddressFamily,  Type,  Protocol)
int AddressFamily, Type, Protocol;

Beschreibung

Die Subroutine socket erstellt einen Socket in der angegebenen AddressFamily und des angegebenen Typs. Ein Protokoll kann vom System angegeben oder zugeordnet werden. Wenn das Protokoll nicht angegeben wird (Wert 0), wählt das System ein geeignetes Protokoll aus den Protokollen in der Adressfamilie aus, das zur Unterstützung des angeforderten Sockettyps verwendet werden kann.

Die Subroutine Socket gibt einen Deskriptor (eine Ganzzahl) zurück, der in späteren Subroutinen verwendet werden kann, die an Sockets arbeiten.

Socketoptionen steuern Socketoperationen. Die Subroutinen getsockopt und setsockopt werden zum Abrufen und Festlegen dieser Optionen verwendet, die in der Datei /usr/include/sys/socket.h definiert sind.

Parameter

Element Beschreibung
AddressFamily Gibt eine Adressfamilie an, mit der die in späteren Socketoperationen angegebenen Adressen interpretiert werden sollen. Die Datei /usr/include/sys/socket.h enthält die Definitionen der Adressfamilien. Häufig verwendete Familien sind:
AF_UNIX
Gibt die Pfadnamen des Betriebssystems an.
AF_INEZ
Bezeichnet die ARPA-Internetadressen.
AF_INET6
Bezeichnet die Adressen IPv6 und IPv4 .
AF_NS-ANS
Bezeichnet das Protokoll XEROX Network Systems.
AF_UMGEHUNG
Bezeichnet die Kernel-Bypass-Protokolldomäne (z. B. die Protokolle, die in der InfiniBand -Domäne betrieben werden).
Typ Gibt die Semantik der Kommunikation an Die Datei /usr/include/sys/socket.h definiert die Sockettypen. Das Betriebssystem unterstützt die folgenden Typen:
SOCK_DATENSTROM
Stellt sequenzierte, bidirektionale Byteströme mit einem Übertragungsmechanismus für Out-of-band-Daten bereit
SOCK_DGRAM
Stellt Datagramme bereit, bei denen es sich um verbindungslose Nachrichten mit einer festen maximalen Länge (normalerweise kurz) handelt.
SOCK_RAW
Bietet Zugriff auf interne Netzprotokolle und Schnittstellen. Dieser Sockettyp ist nur für den Rootbenutzer oder für Benutzer ohne Rootberechtigung verfügbar, die über die Funktion CAP_NUMA_ATTACH verfügen. (Für den Zugriff auf unformatierte Sockets ohne Rootberechtigung wird die Funktion CAP_NUMA_ATTACH zusammen mit CAP_PROPAGATE über die Befehl "chuser"zugeordnet.
SOCK_SEQPACKET
Stellt sequenzierten, zuverlässigen und nicht duplizierten Informationsfluss bereit. Dieser Sockettyp wird für die Socketerstellung im UDP-Stil verwendet, wenn das Protokoll Stream Control Transmission Protocol und Reliable Datagram Sockets (RDS) verwendet werden.
Protokoll Gibt ein bestimmtes Protokoll an, das mit dem Socket verwendet werden soll Wenn Sie für den Parameter Protokoll den Wert 0 angeben, verwendet die Subroutine Socket standardmäßig das typische Protokoll für den angeforderten Typ des zurückgegebenen Sockets. Für SCTP-Sockets ist der Protokollparameter IPPROTO_SCTP. Für RDS -Sockets lautet der Parameter Protokoll BYPASSPROTO_RDS.

Rückgabewerte

Nach erfolgreicher Beendigung gibt die Subroutine Socket eine ganze Zahl zurück (den Socketdeskriptor).

Wenn die Subroutine Socket nicht erfolgreich ist, führt der Subroutinenhandler folgende Funktionen aus:

  • Gibt den Wert -1 an das aufrufende Programm zurück.
  • Verschiebt einen Fehlercode, der den spezifischen Fehler angibt, in die globale Variable Fehlernummer . Weitere Erläuterungen zur Variablen Fehlernummer finden Sie unter Objektklasse für Fehlerbenachrichtigung.

Fehlercodes

Die Subroutine Socket ist nicht erfolgreich, wenn einer der folgenden Fehler auftritt:

Fehler Beschreibung
EAFNOUNTERSTÜTZUNG Die Adressen in der angegebenen Adressfamilie können mit diesem Socket nicht verwendet werden.
EMDATEI Die Deskriptortabelle pro Prozess ist voll.
ENOBUFS Im System waren nicht genügend Ressourcen verfügbar, um den Aufruf abzuschließen.
ESOCKTNOUNTERSTÜTZUNG Der Socket in der angegebenen Adressfamilie wird nicht unterstützt.

Beispiele

Das folgende Programmfragment veranschaulicht die Verwendung der Subroutine Socket zum Erstellen eines Datagrammsockets für die Verwendung auf der Maschine:

s = socket(AF_UNIX, SOCK_DGRAM,0);

Implementierungsspezifikationen

Die Socket-Subroutine ist Teil von Base Operating System (BOS) Runtime.

Die Socketanwendungen können mit COMPAT_43 -Definition kompiliert werden. Dadurch wird die sockaddr -Struktur BSD 4.3 kompatibel. Weitere Informationen finden Sie unter socket.h.