socket_create

(PHP 4 >= 4.1.0, PHP 5)

socket_create -- Crée une socket

Description

resource socket_create ( int domain, int type, int protocol )

socket_create() crée un point de communication (une socket) et retourne une ressource de socket. Une connexion typique réseau est composée de deux sockets, une qui joue le rôle de client, et l'autre le rôle du serveur.

Le paramètre domain spécifie la famille de protocoles à utiliser par la socket.

Tableau 1. Famille d'adresses / protocoles disponibles

DomaineDescription
AF_INET Protocole basé sur IPv4. TCP et UDP sont les protocoles communs de cette famille de protocoles.
AF_INET6 Protocole basé sur IPv6. TCP et UDP sont les protocoles communs de cette famille de protocoles. Le support a été ajouté en PHP 5.0.0.
AF_UNIX Famille de protocoles locales de communication. Le rendement élevé et des moindres coûts supplémentaires lui font une grande force d'IPC (Interprocess Communication).

Le paramètre type sélectionne le type de communication à utiliser par la socket.

Tableau 2. Types de sockets disponibles

TypeDescription
SOCK_STREAM Fournit des flux d'octets ordonnancés, fiables, full-duplex, raccordés sur la base. Un mécanisme de transmission des données "out-of-band" peut être supporté. Le protocole TCP est basé sur ce type de socket.
SOCK_DGRAM Support des datagrammes (moins de connexion, message non garantie d'une longueur maximum fixe). Le protocole UDP est basé sur ce type de socket.
SOCK_SEQPACKET Fournis un chemin de transmission de données séquentiel, fiable, connexion à la basé par deux chemins pour les datagrammes de longueur maximal fixe ; un consommateur est requit pour lire la totalité d'un paquet avec chaque appel à la lecture.
SOCK_RAW Fournit l'accès brut de protocole de réseau. Ce type spécial de socket peut être utilisé pour construire manuellement tout type de protocole. Une utilisation commune de ce type de socket est le traitement des requêtes ICMP (comme le ping, traceroute, etc.).
SOCK_RDM Fournit une couche fiable de datagramme qui ne garantie pas l'ordre des données. Ce type de socket est le plus susceptible de ne pas être implémenté sur votre système d'exploitation.

Le paramètre protocol définie le protocole spécifique pour le domaine domain à utiliser lors de communication sur une socket retournée. La valeur appropriée peut être retrouvée par son nom en utilisant la fonction getprotobyname(). Si le protocole désiré est TCP ou UDP, les constantes correspondantes SOL_TCP et SOL_UDP peuvent être utilisées.

Tableau 3. Protocoles Communs

NomDescription
icmp Le protocole ICMP (Internet Control Message Protocol) est utilisé tout d'abord par les passerelles et les hôtes pour reporter les erreurs dans des communications de datagramme. La commande "ping" (présente dans les systèmes de production modernes) est un exemple d'application utilisant le protocole ICMP.
udp Le protocole UDP (User Datagramm Protocol) est un protocole sans connexion, incertaine avec les longueurs d'enregistrements fixes. De ce fait, UDP requiert une quantité minimum de protocole aérienne.
tcp Le protocole TCP (Transmission Control Protocol) est un protocole fiable, connecté sur la base, orienté flux et full-duplex. TCP garantie que chaque paquet est reçu dans l'ordre dans lequel il a été envoyé. Si quelques paquets sont perdus pendant la communication, TCP retransmettra ces paquets tant que l'hôte destinataire ne les aura pas reçu entièrement. Pour des raisons de fiabilité et de performance, l'implémentation TCP lui-même décide des frontières appropriées d'octets de la couche fondamentale de communication du datagramme. Par conséquent, les applications TCP doivent autoriser la possibilité de transmission partiel d'enregistrement.

socket_create() retourne une ressource de socket en cas de succès et FALSE sinon. Le code d'erreur généré peut être obtenu en appelant la fonction socket_last_error(). Ce code d'erreur peut être passé à la fonction socket_strerror() pour obtenir un message d'erreur, humainement lisible.

Note : Si une valeur invalide est spécifiée au paramètre domain ou au paramètre type, la fonction socket_create() prendra comme paramètres par défaut respectivement AF_INET et SOCK_STREAM et générera un message d'alerte (E_WARNING).

Voir aussi socket_accept(), socket_bind(), socket_connect(), socket_listen(), socket_last_error() et socket_strerror().