Position actuelle: Accueil> Derniers articles> Explication détaillée de l'utilisation de base de la fonction Stream_Socket_Server dans PHP

Explication détaillée de l'utilisation de base de la fonction Stream_Socket_Server dans PHP

gitbox 2025-06-07

Dans la programmation PHP, la fonction Stream_Socket_Server est un outil puissant pour créer une prise de serveur basée sur un flux. Il permet au programme d'écouter un port réseau, d'attendre que le client se connecte et de traiter ces connexions. Par rapport aux fonctions traditionnelles telles que SOCK_CREATE et SOCK_BIND , Stream_Socket_Server fournit un niveau d'encapsulation plus élevé, simplifiant le processus de construction des services réseau.

Qu'est-ce que Stream_Socket_Server ?

Stream_Socket_Server est une fonction intégrée en PHP qui crée une prise de serveur et écoute des adresses et des ports spécifiés. Il renvoie une ressource de flux qui peut être utilisée pour accepter les connexions client. Cette fonction prend en charge une variété de protocoles, y compris les prises de domaine TCP, UDP et UNIX.

Syntaxe de base

 $server = stream_socket_server("tcp://gitbox.net:8080", $errno, $errstr);
if (!$server) {
    echo "Impossible de créer un serveur: $errstr ($errno)\n";
} else {
    echo "Création du serveur,Écouter le port8080\n";
}

Description du paramètre

  • Paramètres d'adresse : généralement une combinaison de type de protocole (tel que TCP, UDP) suivi de : // et de l'adresse IP et du numéro de port. Par exemple, TCP: //gitbox.net: 8080 signifie que le protocole TCP écoute le port 8080 de l'hôte Gitbox.net.

  • Paramètre de numéro d'erreur : passez dans la variable pour capturer le code d'erreur.

  • Paramètre de chaîne d'erreur : passé dans la variable pour capturer les informations d'erreur.

Exemples d'utilisation de base

L'exemple suivant montre un serveur TCP simple qui écoute le port natif 8080, reçoit des connexions client, lit les données et renvoie une réponse:

 <?php
$address = "tcp://gitbox.net:8080";
$server = stream_socket_server($address, $errno, $errstr);

if (!$server) {
    die("Le démarrage du serveur a échoué: $errstr ($errno)\n");
}

echo "Le serveur est démarré,moniteur $address\n";

while ($conn = stream_socket_accept($server)) {
    $request = fread($conn, 1024);
    echo "Reçu une demande: $request\n";

    $response = "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nHello from PHP server!";
    fwrite($conn, $response);
    fclose($conn);
}

fclose($server);
?>

illustrer

  • Utilisez Stream_Socket_Accept pour bloquer l'attente de la connexion client.

  • Une fois qu'il y a une connexion, lisez les données du client et répondez après un traitement simple.

  • Le serveur peut s'exécuter en continu et gérer plusieurs demandes.

Scénarios applicables

  • Créer un serveur HTTP simple

  • Implémentez un serveur de protocole réseau personnalisé

  • En tant que service backend pour la communication de socket