Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       socket - erzeuge einen Kommunikationsendpunkt

       Diese  Handbuchseite ist eventuell veraltet. Im Zweifelsfall ziehen Sie
       die englischsprachige Handbuchseite zu Rate, indem Sie

              man -LC 2 socket

       eingeben.

SYNTAX

       #include <sys/types.h>
       #include <sys/socket.h>

       int socket(int domain, int type, int protocol);

BESCHREIBUNG

       Socket erzeugt einen Kommunikationsendpunkt und  gibt  den  zugehorigen
       Deskriptor zuruck.

       Der  Parameter domain spezifiziert die Kommunikationsdomain, in der die
       Kommunikation stattfinden soll, also die Protokollfamilie, die  benutzt
       werden  soll.   Diese Familien sind in der Include-Datei <sys/socket.h>
       definiert.

       Zurzeit werden folgende Domains unterstutzt:

       Name               Zweck                             Handbuchseite
       PF_UNIX,PF_LOCAL   Lokale Kommunikation              unix(7)
       PF_INET            IPv4 Internet-Protokoll           ip(7)
       PF_INET6           IPv6 Internet-Protokoll
       PF_IPX             IPX - Novell-Protokoll
       PF_NETLINK         Kernel User Interface Device      netlink(7)
       PF_X25             ITU-T X.25 / ISO-8208-Protokoll   x25(7)
       PF_AX25            Amateur-Radio AX.25-Protokoll
       PF_ATMPVC          Zugriff auf raw ATM PVCs
       PF_APPLETALK       Appletalk                         ddp(7)
       PF_PACKET          Low-Level Paketschnittstelle      packet(7)

       Der  Socket  hat  den  in  type  angegebenen  Typ,  der  die  Art   der
       Kommunikation bestimmt.  Zurzeit sind folgende Arten definiert:

       SOCK_STREAM
              stellt    einen    sequenziellen,    verlasslichen,   zwei-Wege,
              verbindungsbasierten Bytestream  zur  Verfugung.   Ein  "out-of-
              band"-Ubertragungsmechanismus kann unterstutzt werden.

       SOCK_DGRAM
              bietet   Datagramme  (verbindungslos,  unverlassliche  Nachricht
              einer festen (meist kleinen) maximalen Lange).

       SOCK_SEQPACKET
              bietet einen  sequenziellen,  verlasslichen,  zwei-Weg-basierten
              Ubertragungspfad  fur  Datagramme  einer festen maximalen Lange.
              Der Empfanger muss ein ganzes Paket  mit  jedem  Funktionsaufruf
              lesen.

       SOCK_RAW
              stellt Zugriff auf interne Netzwerkprotokolle und Schnittstellen
              zur Verfugung.

       SOCK_RDM
              bietet eine verlassliche Datagramm-Schicht, die  kein  Sortieren
              garantiert.

       SOCK_PACKET
              ist  veraltet  und  sollte  nicht  in  neuen  Programmen benutzt
              werden. Siehe packet(7).

       protocol bezeichnet ein spezielles Protokoll,  das  auf  diesem  Socket
       benutzt  wird.   Normalerweise  gibt es nur ein einziges Protokoll, das
       von einem speziellen Socket einer  Protokollfamilie  unterstutzt  wird.
       Nichtsdestotrotz  ist  es  moglich, dass mehrere Protokolle existieren.
       In diesem  Fall  muss  das  zu  verwendende  Protokoll  auf  diese  Art
       angegeben   werden.   Die  Protokollnummer  ist  individuell  fur  eine
       bestimmte "Kommunikationsdomain".  Siehe dazu auch protocols(5).

       In   getprotoent(3),   ist   beschrieben,   wie    Protokollnamen    in
       Protokollnummern umgewandelt werden konnen.

       Sockets  des  Typs SOCK_STREAM sind vollduplex-orientierte Bytestreams,
       ahnlich wie Pipes.  Sie erhalten die Record-Grenzen nicht.  Ein Stream-
       Socket  muss  sich  in  einem  connected-Modus  befinden, bevor mit ihm
       irgendwelche  Daten  gesendet  oder  empfangen  werden  konnen.    Eine
       Verbindung  zu  einem  anderen  Socket wird mit connect(2) hergestellt.
       Einmal verbunden, konnen Daten  mit  read(2)  und  write(2)  ubertragen
       werden  bzw.  mit  Varianten  von  send(2)  oder  recv(2).   Wenn  eine
       Verbindung abgebaut werden soll, wird close(2) ausgefuhrt.  Out-of-band
       Daten  konnen, wie in send(2) beschrieben, gesendet und, wie in recv(2)
       beschrieben, empfangen werden.

       Die Kommunikationsprotokolle, die verwendet werden, um ein  SOCK_STREAM
       zu implementieren, stellen sicher, dass Daten weder verloren gehen noch
       verdoppelt werden.   Wenn  ein  Datum,  fur  das  das  Partnerprotokoll
       ausreichend  Puffer  zur  Verfugung hat, in einem angemessenen Zeitraum
       nicht erfolgreich ubertragen werden kann,  wird  angenommen,  dass  die
       Verbindung  unterbrochen  ("broken")  ist.  Wenn  SO_KEEPALIVE  fur den
       Socket   gesetzt   ist,    uberpruft    das    Protokoll    auf    eine
       protokollspezifische  Art, ob das andere Ende noch immer existiert. Ein
       SIGPIPE-Signal wird erzeugt,  wenn  ein  Prozess  versucht,  auf  einem
       kaputten Stream zu senden oder zu empfangen. Dies beendet Prozesse, die
       das Signal nicht verarbeiten.

       SOCK_SEQPACKET-Sockets    benutzen    dieselben     Systemcalls     wie
       SOCK_STREAM-Sockets.   Der  einzige  Unterschied  besteht  darin,  dass
       read(2) nur die angeforderte Menge  an  Daten  zuruckliefert  und  alle
       restlichen   verwirft.  AuBerdem  werden  alle  Nachrichtengrenzen  der
       eingehenden Datagramme beibehalten.

       SOCK_DGRAM- und SOCK_RAW-Sockets erlauben das Senden von Datagrammen zu
       Empfangern,  die  im  send(2) Aufruf genannt werden.  Datagramme werden
       grundsatzlich mit recvfrom(2)  empfangen,  das  das  nachste  Datagramm
       zusammen mit der Absenderadresse zuruckliefert.

       SOCK_PACKET  ist  ein  veralteter Socket-Typ, um rohe Pakete direkt vom
       Geratetreiber zu empfangen. Benutzen Sie stattdessen packet(7).

       Ein fcntl(2)-Aufruf kann mit dem F_SETOWN-Argument benutzt  werden,  um
       eine  Prozessgruppe  anzugeben,  die  ein SIGURG-Signal empfangen soll,
       wenn out-of-band Daten ankommen, oder  ein  SIGPIPE-Signal,  wenn  eine
       SOCK_STREAM-Verbindung unerwartet zusammenbricht.  Damit kann ebenfalls
       der Prozess oder die Prozessgruppe eingestellt werden, welche  I/O  und
       asynchrone  Benachrichtigung  von  I/O-Ereignissen mit dem SIGIO-Signal
       erhalt.  F_SETOWN zu benutzen entspricht dem Aufruf der  Systemfunktion
       ioctl(2) mit dem Argument SIOSETOWN

       Wenn  das  Netzwerk dem Protokollmodul einen Fehler meldet (z. B. durch
       eine ICMP-Nachricht unter IP), wird der Flag  gesetzt,  der  auf  einen
       unbearbeiteten   Fehler   ("pending   error")  hinweist.   Der  nachste
       Funktionsaufruf fur diesen Socket liefert den Code des Fehlers  zuruck.
       Bei   manchen  Protokollen  ist  es  moglich,  eine  socket-spezifische
       Fehlerliste einzuschalten, um genaue Informationen uber den  Fehler  zu
       erhalten. Siehe IP_RECEIVER in ip(7).

       Die  Arbeitsweise von Sockets wird von Socket-Level-Optionen gesteuert.
       Diese   sind   in   der   Include-Datei    <sys/socket.h>    definiert.
       setsockopt(2)  und getsockopt(2) werden verwendet, um diese Optionen zu
       setzen bzw. zu lesen.

BEMERKUNG

       Die unter BSD 4.*  benutzten  Konstanten  fur  Protokoll-Familien  sind
       PF_UNIX, PF_INET usw., wahrend AF_UNIX usw. fur Adressfamilien verwandt
       werden. Allerdings  verspricht  die  BSD  Handbuchseite  bereits:  "Die
       Protokollfamilie  ist generell dieselbe wie die Adressfamilie", und die
       folgenden Standards benutzen uberall AF_*.

R"UCKGABEWERTE

       -1 wird zuruckgegeben, wenn ein Fehler  auftritt,  ansonsten  wird  die
       Nummer des Deskriptors zuruckgegeben, der den Socket referenziert.

FEHLER

       EPROTONOSUPPORT
              Der  Protokolltyp, der in protocol angegeben ist, wird nicht von
              dieser Kommunikationsdomain unterstutzt.

       ENFILE Es ist nicht genugend Kernelspeicher  vorhanden,  um  eine  neue
              Socket-Struktur anzulegen.

       EMFILE Die Dateideskriptortabelle des Prozesses ist voll.

       EACCESS
              Es  ist  dem Prozess nicht erlaubt, einen Socket vom angegebenen
              Typ und/oder Protokoll zu erzeugen.

       ENOBUFS oder ENOMEM
              Es ist nicht ausreichend Speicher verfugbar.   Der  Socket  kann
              nicht  erzeugt  werden  bis  ausreichend  Ressourcen freigemacht
              wurden.

       EINVAL Unbekanntes Protokoll oder Protokollfamilie nicht verfugbar.

KONFORM ZU

       4.4BSD (die socket-Funktion taucht in BSD 4.2 auf).  Generell  portabel
       auf/von   nicht-BSD-Systemen,  die  den  BSD-Socket-Layer  unterstutzen
       (inklusive System-V-Varianten).

BUGS

       SOCK_UUCP ist noch nicht implementiert.

SIEHE AUCH

       accept(2),   bind(2),   connect(2),   getprotoent(3),   getsockname(2),
       getsockopt(2),   ioctl(2),   listen(2),  read(2),  recv(2),  select(2),
       send(2), shutdown(2), socketpair(2), write(2)

       "An Introductory 4.3 BSD Interprocess Communication  Tutorial"  ist  in
       UNIX Programmer's Supplementary Documents Volume 1 abgedruckt.

       "BSD  Interprocess  Communication  Tutorial"  ist  in UNIX Programmer's
       Supplementary Documents Volume 1 abgedruckt.