Crée un socket

# socket_create

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_create — Crée un socket

### Description

function socket_create(int `$domain`, int `$type`, int `$protocol`): Socket|false

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

### Liste de paramètres

`domain`

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

  Famille d'adresses / protocoles disponibles
  Domaine | Description
  --- | ---
  `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.
  `AF_UNIX` | Famille de protocoles locales de communication. Son rendement élevé et ses faibles coûts supplémentaires en font une excellente forme d'IPC (Interprocess Communication).

`type`

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

  Types de sockets disponibles
  Type | Description
  --- | ---
  `SOCK_STREAM` | Fournit des flux d'octets séquentiels, fiables, full-duplex et basés sur la connexion. Un mécanisme de transmission des données "`out-of-band`" peut être supporté. Le protocole TCP est basé sur ce type de sockets.
  `SOCK_DGRAM` | Support des datagrammes (sans connexion, messages non fiables d'une longueur maximum fixe). Le protocole UDP est basé sur ce type de sockets.
  `SOCK_SEQPACKET` | Fournit un chemin de transmission de données séquentiel, fiable, bidirectionnel et basé sur la connexion pour les datagrammes de longueur maximale fixe ; un consommateur est requis 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 sockets est le traitement des requêtes ICMP (comme le ping).
  `SOCK_RDM` | Fournit une couche fiable de datagramme qui ne garantit pas l'ordre des données. Ce type de socket est le plus susceptible de ne pas être implémenté sur le système d'exploitation.

`protocol`

  Le paramètre `protocol` définit le protocole spécifique pour le domaine `domain` à utiliser lors de communications sur un socket retourné. 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.

  Protocoles Communs
  Nom | Description
  --- | ---
  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 Datagram Protocol`) est un protocole sans connexion, non fiable, avec des longueurs d'enregistrement fixes. De ce fait, `UDP` requiert une quantité minimum de surcharge protocolaire.
  tcp | Le protocole TCP (`Transmission Control Protocol`) est un protocole fiable, basé sur la connexion, orienté flux et full-duplex. `TCP` garantit 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çus entièrement. Pour des raisons de fiabilité et de performance, l'implémentation `TCP`, elle-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 partielle d'enregistrements.

### Valeurs de retour

socket_create() retourne une instance 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.

### Erreurs / Exceptions

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`).

### Historique

Version | Description
--- | ---
8.5.0 | Prend désormais en charge la création de sockets de la famille `AF_PACKET`.
8.0.0 | En cas de succès, cette fonction retourne désormais une instance de Socket ; auparavant, une resource était retournée.

### Voir aussi

- socket_accept() - Accepte une connexion sur un socket
- socket_bind() - Lie un nom à un socket
- socket_connect() - Crée une connexion sur un socket
- socket_listen() - Attend une connexion sur un socket
- socket_last_error() - Lit la dernière erreur générée par un socket
- socket_strerror() - Retourne une chaîne décrivant un message d'erreur

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open