Maison développement back-end tutoriel php Qu'est-ce que le socket en php ? Explication détaillée des exemples de sockets

Qu'est-ce que le socket en php ? Explication détaillée des exemples de sockets

May 22, 2017 pm 01:46 PM

Qu'est-ce que Socket ?

Socket est une couche d'abstraction logicielle intermédiaire pour la communication entre la couche application et la suite de protocoles TCP/IP. En mode conception, Socket est en fait un mode façade, qui cache la famille complexe de protocoles TCP/IP derrière l'interface Socket. Pour les utilisateurs, un ensemble d'interfaces simples permet à Socket d'organiser les données pour répondre aux exigences spécifiées. Il est rare de voir de nombreuses personnes utiliser le module socket de PHP pour faire certaines choses. Probablement tout le monde le place dans le cadre des langages de script, mais en fait, le module socket de PHP peut faire beaucoup de choses, y compris faire ftplist , soumission de post http. , soumission SMTP, package de groupe et interaction de messages spéciaux (tels que le protocole smpp), requête whois. Ce sont des requêtes relativement courantes. Surtout, ce que la bibliothèque d'extensions de socket de PHP peut faire n'est pas bien pire que C.

Bases de Socket

php utilise la bibliothèque de sockets de Berkley pour créer ses connexions. Vous pouvez savoir que le socket n’est qu’une structure de données. Utilisez cette structure de données de socket pour démarrer une session entre le client et le serveur. Ce serveur est toujours à l'écoute et se prépare à générer une nouvelle session. Lorsqu'un client se connecte au serveur, il ouvre un port sur lequel le serveur écoute une session. A ce moment, le serveur accepte la demande de connexion du client puis effectue un cycle. Le client peut désormais envoyer des informations au serveur, et le serveur peut envoyer des informations au client.
Pour générer un Socket, trois variables sont requises : un protocole, un type de socket et un type de protocole public . Vous avez le choix entre trois protocoles lors de la génération d'un socket. Continuez à lire ci-dessous pour obtenir le contenu détaillé du protocole. Définir un type de protocole public est un élément essentiel pour la connexion. Jetons un coup d'œil à ces types de protocoles courants.

1. Accord

名字/常量  描述
AF_INET 这是大多数用来产生socket的协议,使用TCP或UDP来传输,用在IPv4的地址
AF_INET6  与上面类似,不过是来用在IPv6的地址
AF_UNIX  本地协议,使用在Unix和Linux系统上,它很少使用,一般都是当客户端和服务器在同一台及其上的时候使用

2. Type de prise

名字/常量  描述
SOCK_STREAM 这个协议是按照顺序的、可靠的、数据完整的基于字节流的连接。这是一个使用最多的socket类型,这个socket是使用TCP来进行传输。
SOCK_DGRAM 这个协议是无连接的、固定长度的传输调用。该协议是不可靠的,使用UDP来进行它的连接。
SOCK_SEQPACKET 这个协议是双线路的、可靠的连接,发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。
SOCK_RAW 这个socket类型提供单一的网络访问,这个socket类型使用ICMP公共协议。(ping、traceroute使用该协议)
SOCK_RDM 这个类型是很少使用的,在大部分的操作系统上没有实现,它是提供给数据链路层使用,不保证数据包的顺序

3. Protocole public

名字/常量  描述
ICMP 互联网控制消息协议,主要使用在网关和主机上,用来检查网络状况和报告错误信息
UDP 用户数据报文协议,它是一个无连接,不可靠的传输协议
TCP 传输控制协议,这是一个使用最多的可靠的公共协议,它能保证数据包能够到达接受者那儿,如果在传输过程中发生错误,那么它将重新发送出错数据包。

Maintenant que nous connaissons les trois éléments qui génèrent un socket, nous pouvons utiliser la fonction socket_create() en php pour générer un socket. La fonction socket_create() nécessite trois paramètres : un protocole, un type de socket et un protocole public. La fonction socket_create() renvoie un type de ressource contenant le socket si elle s'exécute correctement. En cas d'échec, elle renvoie false.

Resourece socket_create(int protocol, int socketType, int commonProtocol);
Copier après la connexion

php fournit plusieurs fonctions pour manipuler les sockets, qui peuvent lier le socket à une IP, surveiller la communication d'un socket et accepter un socket ; regardons maintenant un exemple pour comprendre le ; function Comment générer, recevoir et écouter une socket.

Le code est le suivant :

<?php
$commonProtocol = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM,$commonProtocol);
socket_bind($socket,'localhost',1337);
socket_listen($socket);
?>
Copier après la connexion

Remarque : L'exemple ci-dessus génère votre propre serveur.

La première ligne de l'exemple utilise le nom du protocole public pour obtenir un type de protocole. Le protocole public TCP est utilisé ici. Si vous souhaitez utiliser le protocole UDP ou ICMP, vous devez alors modifier les paramètres de la fonction getprotobyname() en "udp" ou "icmp". Une alternative consiste à ne pas utiliser la fonction getprotobyname() mais à spécifier SOL_TCP ou SOL_UDP dans la fonction socket_create().
La deuxième ligne de l'exemple génère un socket et renvoie une instance de la ressource socket. Une fois que vous disposez d’une instance de la ressource socket, vous devez lier le socket à une adresse IP et un port.
La troisième ligne ici lie le socket à l'ordinateur local (127.0.0.1) et lie le socket à votre port 1337. Ensuite, vous devez écouter toutes les connexions socket entrantes. Après la quatrième ligne, vous devez comprendre toutes les fonctions des sockets et leur utilisation. La fonction socket sera expliquée en détail dans les chapitres suivants.

【Tutoriels associés recommandés】

1. "php.cn Dugu Jiujian (4) - Tutoriel vidéo PHP "

2. ensemble de tutoriels sur la programmation PHP de l'entrée à la maîtrise

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 de ce site Web
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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Date et heure de CakePHP

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Configuration du projet CakePHP

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Téléchargement de fichiers CakePHP

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Routage CakePHP

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

Discuter de CakePHP

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

Guide rapide CakePHP

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Comment configurer Visual Studio Code (VS Code) pour le développement PHP

See all articles