Position actuelle: Accueil> Catégories de fonctions> socket_create_pair

socket_create_pair

Créez une paire de prises indiscernables et stockez-les dans un tableau
Nom:socket_create_pair
Catégorie:Prises
Langage de programmation:php
Description en une ligne:Créez une paire de prises interconnectées qui peuvent être utilisées pour communiquer dans le même processus

Nom de la fonction: socket_create_pair ()

Version applicable: PHP 4, PHP 5, PHP 7

Description de la fonction: La fonction socket_create_pair () est utilisée pour créer une paire de prises interconnectées, qui peuvent être utilisées pour communiquer dans le même processus.

Syntaxe: bool socket_create_pair (domaine int $, type int $, protocole int $, array & $ fd)

paramètre:

  • $ Domaine: le domaine du protocole de la prise. Les domaines du protocole pris en charge incluent AF_INET (Protocole réseau IPv4), AF_INET6 (Protocole réseau IPv6) et AF_UNIX (socket de système de fichiers UNIX local).
  • $ Type: Le type de socket. Les types de socket pris en charge incluent sock_stream (stream sockets, sockets fiables et orientés connectés) et sock_dgram (sockets datagram, sockets sans connexion, peu fiables).
  • $ Protocole: Protocole de socket. Il peut s'agir d'ipproto_tcp (protocole TCP) ou ipproto_udp (protocole UDP).
  • $ fd: un tableau contenant deux descripteurs de fichiers de socket. Après une création réussie, le descripteur de fichier de la première prise est stocké dans $ fd [0], tandis que le descripteur de fichier du deuxième socket est stocké dans $ fd [1].

Valeur de retour: Retour True si une paire de prises interconnectées est créée avec succès. Si une erreur se produit, FALSE est renvoyé.

Exemple:

 // 创建一对相互连接的套接字if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $fd) === false) { echo "套接字创建失败: " . socket_strerror(socket_last_error()) . "\n"; exit; } // 在两个套接字之间进行通信$pid = pcntl_fork(); if ($pid == -1) { echo "进程创建失败\n"; exit; } elseif ($pid == 0) { // 子进程$message = "Hello from child process!"; socket_write($fd[0], $message, strlen($message)); exit; } else { // 父进程$message = socket_read($fd[1], 1024); echo "接收到的消息: " . $message . "\n"; pcntl_wait($status); // 等待子进程结束exit; }

Dans l'exemple ci-dessus, en utilisant d'abord socket_create_pair () pour créer une paire de prises interconnectées et stocker les descripteurs de fichiers des deux sockets dans le tableau $ fd. Ensuite, un processus enfant est créé via pcntl_fork (), et le processus enfant envoie un message au processus parent. Le processus parent lit le message envoyé par le processus de l'enfant via socket_read () et le publie sur la console. Enfin, attendez que le processus de l'enfant se termine via pcntl_wait ().

Fonctions similaires
Articles populaires