Position actuelle: Accueil> Derniers articles> socket_accept () + socket_write (): envoyez une réponse au client

socket_accept () + socket_write (): envoyez une réponse au client

M66 2025-05-20

Dans PHP, la programmation de socket est une méthode de communication réseau sous-jacente, adaptée à la création de programmes de serveurs personnalisés. Cet article présentera comment utiliser la fonction socket_accept () pour accepter les connexions du client et envoyer une réponse au client via la fonction socket_write () .

1. Créez une prise et liez le port

Tout d'abord, nous devons créer une ressource de socket et le lier à l'adresse IP et au port spécifiés pour écouter les demandes du client.

 <?php
// Créer unTCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("socket_create() échouer: " . socket_strerror(socket_last_error()) . "\n");
}

// LierIPet ports,假设Lier本地IPet ports8080
$bind = socket_bind($socket, "0.0.0.0", 8080);
if ($bind === false) {
    die("socket_bind() échouer: " . socket_strerror(socket_last_error($socket)) . "\n");
}

2. Écoutez et acceptez les connexions

Une fois la liaison réussie, nous appelons socket_listten () pour commencer à écouter, puis utiliser socket_accept () pour bloquer et attendre que le client se connecte.

 // Commencer à surveiller,Le plus autorisé5Aligner les connexions
socket_listen($socket, 5);
echo "Startup de serveur,En attente de la connexion du client...\n";

while (true) {
    // 阻塞En attente de la connexion du client
    $clientSocket = socket_accept($socket);
    if ($clientSocket === false) {
        echo "socket_accept() échouer: " . socket_strerror(socket_last_error($socket)) . "\n";
        continue;
    }

    echo "Le client est connecté\n";

3. Lisez la demande du client et envoyez une réponse

Après avoir reçu la connexion client, les données du client peuvent être lues via socket_read () et envoyer une réponse au client à l'aide de socket_write () . Par exemple, envoyez un message d'accueil simple.

     // Lire les données du client,Lecture maximale1024octet
    $input = socket_read($clientSocket, 1024);
    echo "A reçu un message client: $input\n";

    // Envoyer des données de réponse
    $response = "Bienvenue à visiterm66.netserveur!\n";
    socket_write($clientSocket, $response, strlen($response));

    // Fermer la connexion du client
    socket_close($clientSocket);
}

4. Fermez la prise du serveur

Lorsque le serveur doit être arrêté, appelez socket_close () pour libérer la ressource.

 socket_close($socket);

Résumer

Le code ci-dessus montre un exemple de serveur basé sur des socket PHP simple, avec l'accent sur:

  • Utilisez socket_create () pour créer un socket;

  • Utilisez socket_bind () pour lier l'IP et le port;

  • Utilisez socket_listten () pour commencer à écouter;

  • Utilisez socket_accept () pour bloquer l'attente de la connexion client;

  • Utilisez socket_write () pour envoyer des réponses de données au client.

De cette façon, vous pouvez créer un serveur TCP de base via la programmation de socket native PHP et gérer de manière flexible les connexions et les communications clients.