05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4.3 <strong>Sockets</strong> 181<br />

wird. Auch hier setzen wir wieder die Konstanten AF_INET für die Kommunikation<br />

über IPv4 oder AF_INET6 für die Kommunikation über IPv6 ein. 15 Über<br />

den Parameter type wird der Sockettyp bestimmt (siehe Tabelle 4.5): Durch<br />

Angabe der Konstanten SOCK_STREAM wird ein geordneter, zuverlässiger, bidirektioneler,<br />

verbindungsorientierter Datenstrom ausgewählt. Die Konstante<br />

SOCK_DGRAM zeigt alternativ dazu an, daß über den Socket verbindungslos <strong>und</strong><br />

ohne Zuverlässigkeitsgarantie Datagramme einer fixen Länge ausgetauscht<br />

werden sollen.<br />

Tabelle 4.5. IPv4/IPv6-Sockettypen<br />

Sockettyp<br />

Beschreibung<br />

SOCK STREAM Byte-Stream Socket<br />

SOCK DGRAM Datagram Socket<br />

SOCK SEQPACKET Sequenced-Packet Socket<br />

SOCK RAW Raw Protocol Interface<br />

Der letzte Parameter regelt schließlich, welches Protokoll auf der neuen Kommunikationsstrecke<br />

eingesetzt werden soll. Tabelle 4.6 listet die verschiedenen<br />

Möglichkeiten auf.<br />

Tabelle 4.6. IPv4/IPv6-Protokolle<br />

IP-Protokoll Beschreibung<br />

IPPROTO TCP Transmission Control Protocol (TCP)<br />

IPPROTO UDP User Datagram Protocol (UDP)<br />

IPPROTO STCP Stream Control Transmission Protocol (STCP)<br />

Da allerdings alle Kombinationen aus Adreßfamilie <strong>und</strong> Sockettyp ein Standardprotokoll<br />

besitzen, wird für diesen Parameter meist 0 eingesetzt. Der<br />

Wert 0 steht für den Standard <strong>und</strong> selektiert UDP für SOCK_DGRAM <strong>und</strong> TCP<br />

für SOCK_STREAM. Im Fall von TCP spricht man dann von einem TCP-Socket,<br />

für UDP von einem UDP-Socket.<br />

Die socket()-Funktion liefert schließlich eine nicht-negative Ganzzahl, den<br />

sogenannten Socketdeskriptor, zurück. Mit dem Socketdeskriptor läßt sich im<br />

weiteren Verlauf der Anwendung wie <strong>mit</strong> einem Dateideskriptor arbeiten. Im<br />

Fehlerfall gibt socket() dagegen den Wert -1 zurück. Über die Fehlervariable<br />

errno läßt sich dann der Gr<strong>und</strong> für den Fehlschlag er<strong>mit</strong>teln.<br />

15 Neben den für die <strong>Unix</strong> Netzwerkprogrammierung relevanten IP-Adreßfamilien<br />

gibt es noch die sogenannten <strong>Unix</strong> Domain <strong>Sockets</strong>, die über AF_UNIX ausgewählt<br />

werden. Diese Art von <strong>Sockets</strong> stellt eine elegante Art der Interprozeßkommunikation<br />

innerhalb eines einzelnen <strong>Unix</strong>-Systems dar.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!