socket_create
Erzeugt einen Socket (Endpunkt für die Kommunikation)
Beschreibung
resource socket_create
( int $domain
, int $type
, int $protocol
)
Parameter-Liste
-
domain
-
domain Parameter legt die Protokollfamilie
fest, die für die Kommunikation vom Socket benutzt wird.
Folgende Adressen/Protokollfamilien sind verfügbar:
| Domain |
Beschreibung |
| AF_INET |
IPv4 basierete Internet-Protokolle. TCP und UDP sind allgemein
gebräuchliche Protokolle dieser Familie.
|
| AF_INET6 |
IPv6 basierete Internet-Protokolle. TCP und UDP sind allgemein
gebräuchliche Protokolle dieser Familie. Diese Unterstützung gibt es
seit PHP 5.0.0.
|
| AF_UNIX |
Protokollfamilie für die lokale Kommunikation. Hohe Effizienz und
ein geringer Overhead machen sie zur ersten Wahl für die IPC
(Inter-Process-Communication).
|
-
type
-
Der Parameter type bestimmt den Kommunikationstyp,
den der Socket verwenden soll.
Mögliche Socket-Typen
| Typ |
Beschreibung |
| SOCK_STREAM |
Stellt zuverlässige, sequentielle verbindungsorientierte Byte-Streams
im Vollduplexmodus zur Verfügung. Auch bandexterne Mechanismen zur
Datenübertragung können unterstützt werden. Das TCP-Protokoll beruht
auf diesem Socket-Typ.
|
| SOCK_DGRAM |
Unterstützt Datagramme (verbindunglos, Nachrichten vorgegebener
Maximallänge, deren Übertragung nicht zuverlässig ist). Das
UDP-Protokoll beruht auf diesem Socket-Typ.
|
| SOCK_SEQPACKET |
Stellt eine zuverlässige, sequentielle. bidirektionale
verbindungsorientierte Übertragungsweg für Datagramme vorgegebener
Maximallänge zur Verfügung. Ein Empfänger muss bei jeder
Leseanforderung das gesamte Datenpaket lesen.
|
| SOCK_RAW |
Stellt einen Zugang mit einem nicht bestimmten Netzwerkprotokoll zur
Verfügung. Dieser spezielle Socket-Typ kann dazu benutzt werden, um
manuell ein Protokoll eines beliebigen Typs zu erstellen. Solche
Sockets werden üblicherweise benutzt, um ICMP Requests zu senden
(wie etwa ping oder traceroute usw.).
|
| SOCK_RDM |
Stellt eine zuverlässige Schicht für Datagramme zur Verfügung, in der
die Reihenfolge der Datagramme nicht garantiert wird. Dies ist in
Ihrem Betriebssytem höchstwahrscheinlich nicht implementiert.
|
-
protocol
-
Der Parameter protocol setzt das spezifische
Protokoll innerhalb der angegebenen domain, das
vom zurückgegebenen Socket für die Kommunikation benutzt wird. Der
passende Wert kann ermittelt werden, indem der Name des Protokolls an
die Funktion getprotobyname übergeben wird. Wenn
TCP oder UDP gewünscht werden, können auch die entsprechenden Konstanten
SOL_TCP und SOL_UDP benutzt werden.
Gebräuchliche Protokolle
| Name |
Beschreibung |
| icmp |
Das Internet Control Message Protocol wird hauptsächlich von
Gateways und Hosts benutzt, um Kommunikationsfehler bei Datagrammen
zu melden. Das Kommando "ping" (das in den meisten modernen
Betriebssystemen enthalten ist) ist ein Beispiel für eine Anwendung
von ICMP.
|
| udp |
Das User Datagram Protocol ist ein verbindungsloses, unzuverlässiges
Protokoll, mit dem Datensätze fester Länge versendet werden können.
Aufgrund dieser geringen Anforderungen braucht UDP nur einen
minimalen Protokoll-Overhead.
|
| tcp |
Das Transmission Control Protocol ist ein zuverlässiges,
verbindungsorientiertes, Stream-orientiertes Protokoll für den
Vollduplex-Betrieb. Bei TCP ist garantiert, dass alle Datenpakete in
derselben Reihenfolge empfangen werden, in der sie gesendet wurden.
Falls während der Übertragung ein Datenpaket verlorengeht, wird es
von TCP erneut versendet, und zwar solange, bis der Empfängerhost den
Eingang dieses Paktes zurückmeldet. Aus Gründen der Zuverlässigkeit
und Leistung ist TCP so implementiert, dass es eigenständig die
oktalen Grenzen der darunterliegenden Datagramm-Kommunikationschicht
bestimmen kann. Aus diesem Grund müssen TCP Anwendungen in der Lage
sein, auch Teilübertragungen empfangen zu können.
|
Rückgabewerte
Bei Erfolg gibt socket_create einen Socket-Deskriptor
zurück, bei einem Fehler wird FALSE zurückgegeben. Der aktuelle Fehlercode
kann mit socket_last_error ermittelt und an die Funktion
socket_strerror übergeben werden, um eine textuelle
Beschreibing des Fehlers zu erhalten.
Fehler/Exceptions
Falls eine ungültige domain oder ein ungültiger
type angegbeben wird, fällt socket_create
auf seinen Standardeinstellungen AF_INET und
entsprechend SOCK_STREAM zurück und gibt zusätzlich
eine E_WARNING-Meldung aus.
Siehe auch
- socket_accept
- socket_bind
- socket_connect
- socket_listen
- socket_last_error
- socket_strerror