Maison  >  Article  >  développement back-end  >  Comment faire de la programmation Socket en PHP ?

Comment faire de la programmation Socket en PHP ?

WBOY
WBOYoriginal
2023-05-21 08:27:212461parcourir

Avec le développement continu de la technologie Internet, de plus en plus d'applications doivent utiliser Socket pour la communication réseau. PHP est un langage largement utilisé dans le développement d'applications Web et prend également en charge la programmation Socket. Dans cet article, je vais vous présenter comment utiliser PHP pour la programmation Socket.

1. Introduction à Socket

Avant d'introduire la programmation Socket, nous devons d'abord comprendre le concept de Socket. Socket est une interface de programmation réseau qui fournit une interface de transmission de données standard, indépendante du protocole réseau. Grâce à l'interface Socket, nous pouvons réaliser la communication de données entre différentes machines, réalisant ainsi le développement d'applications réseau.

2. Bibliothèque de fonctions PHP Socket

En PHP, nous pouvons utiliser la bibliothèque de fonctions Socket pour la programmation Socket. La bibliothèque de fonctions comprend une série de fonctions, les plus couramment utilisées incluent :

  1. socket_create() : créer des ressources Socket
  2. socket_bind() : lier les ressources Socket à l'adresse IP et au port spécifiés
  3. socket_listen() : écouter spécifier le socket
  4. socket_accept() : Accepter la demande de connexion Socket
  5. socket_connect() : Se connecter à l'adresse IP et au port spécifiés
  6. socket_recv() : Recevoir les données du Socket
  7. socket_send() : Envoyer les données du Socket
  8. socket_close() : Fermer le Connexion Socket

3. Exemple de programmation Socket

Ci-dessous, nous présenterons un exemple simple de programmation Socket pour réaliser la transmission de données entre le client et le serveur.

Étape 1 : Créer une ressource Socket

Nous devons d'abord créer une ressource Socket, qui peut être réalisée via la fonction socket_create(). Cette fonction a trois paramètres. Le premier paramètre spécifie le type de Socket. SOCK_STREAM est généralement utilisé pour représenter le protocole TCP. Le deuxième paramètre spécifie le type de protocole utilisé par le Socket. La valeur par défaut est généralement utilisée. Protocole du Socket Tel que TCP, UDP, etc. Voici le code pour créer une ressource Socket :

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$socket){
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "
";
}

Étape 2 : lier le Socket

Nous devons lier la ressource Socket à l'adresse IP et au port spécifiés, ce qui peut être réalisé via la fonction socket_bind(). Cette fonction a deux paramètres, le premier paramètre est la ressource Socket et le deuxième paramètre est un tableau contenant l'adresse IP et le numéro de port. Voici le code pour lier le Socket :

$address = "127.0.0.1";
$port = 8000;
$result = socket_bind($socket, $address, $port);
if (!$result){
    echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}

Étape 3 : Écouter le Socket

Nous devons écouter le Socket spécifié, ce qui peut être réalisé via la fonction socket_listen(). Cette fonction a un paramètre, qui est la ressource Socket à surveiller. Voici le code pour écouter le Socket :

$result = socket_listen($socket);
if (!$result){
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}

Étape 4 : Accepter la connexion Socket

Nous devons attendre que le client se connecte et reçoive la demande du client. Ceci peut être réalisé via la fonction socket_accept(). Cette fonction a un paramètre, qui est la ressource Socket qui attend la connexion. Voici le code pour accepter la connexion Socket :

$client = socket_accept($socket);
if (!$client){
    echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}

Étape 5 : Recevoir et envoyer des données

Nous devons recevoir les données envoyées par le client et répondre au client. Ceci peut être réalisé grâce aux fonctions socket_recv() et socket_send(). Voici le code pour recevoir et envoyer des données :

$bytes = socket_recv($client, $buffer, 1024, 0);
if (!$bytes){
    echo "socket_recv() failed: reason: " . socket_strerror(socket_last_error($client)) . "
";
}

$reply = "Hello, " . $buffer . "
";
socket_send($client, $reply, strlen($reply), 0);

Étape 6 : Fermez la connexion Socket

Enfin, nous devons fermer la connexion Socket, ce qui peut être réalisé via la fonction socket_close(). Cette fonction a un paramètre, qui est la ressource Socket à fermer. Voici le code pour fermer la connexion Socket :

socket_close($client);
socket_close($socket);

Le code complet est le suivant :

<?php
$address = "127.0.0.1";
$port = 8000;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if (!$socket){
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "
";
}

$result = socket_bind($socket, $address, $port);

if (!$result){
    echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}

$result = socket_listen($socket);

if (!$result) {
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}

$client = socket_accept($socket);

if (!$client) {
    echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}

$bytes = socket_recv($client, $buffer, 1024, 0);
if (!$bytes) {
    echo "socket_recv() failed: reason: " . socket_strerror(socket_last_error($socket)) . "
";
}

$reply = "Hello, " . $buffer . "
";
socket_send($client, $reply, strlen($reply), 0);

socket_close($client);
socket_close($socket);

IV Résumé

Dans cet article, nous avons présenté le concept de Socket et la bibliothèque de fonctions PHP Socket, et avons également démontré un exemple simple de programmation Socket. La programmation socket peut être utilisée pour implémenter différents types d'applications réseau, telles que les salons de discussion, les jeux en ligne, la messagerie instantanée, etc. Par conséquent, maîtriser la programmation Socket est très important pour les développeurs PHP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn