PHP Socket serveur TCP


Exemple

Création de socket

Créez un socket qui utilise le protocole TCP. C'est la même chose que la création d'un socket client.

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

Socket binding

Lier les connexions d'un réseau donné (paramètre 2) pour un port spécifique (paramètre 3) à la prise.

Le deuxième paramètre est généralement "0.0.0.0" , qui accepte la connexion de tous les réseaux. Ça peut aussi

Une cause commune des erreurs de socket_bind est que l'adresse spécifiée est déjà liée à un autre processus . Les autres processus sont généralement supprimés (généralement manuellement pour éviter de tuer accidentellement des processus critiques) afin que les sockets soient libérés.

socket_bind($socket, "0.0.0.0", 6667) or onSocketFailure("Failed to bind to 0.0.0.0:6667");

Mettre une prise à l'écoute

Faites en socket_listen le socket écoute les connexions entrantes en utilisant socket_listen . Le second paramètre est le nombre maximal de connexions permettant la mise en file d'attente avant leur acceptation.

socket_listen($socket, 5);

Connexion de manutention

Un serveur TCP est en réalité un serveur qui gère les connexions enfants. socket_accept crée une nouvelle connexion enfant.

$conn = socket_accept($socket);

Le transfert de données pour une connexion à partir de socket_accept est le même que pour un socket client TCP .

Lorsque cette connexion doit être fermée, appelez socket_close($conn); directement. Cela n'affectera pas le socket du serveur TCP d'origine.

Fermer le serveur

En revanche, socket_close($socket); devrait être appelé lorsque le serveur n'est plus utilisé. Cela libérera également l'adresse TCP, permettant aux autres processus de se lier à l'adresse.