Maison  >  Article  >  développement back-end  >  PHP utilise des exemples pour comprendre ce qu'est Socket

PHP utilise des exemples pour comprendre ce qu'est Socket

一个新手
一个新手original
2017-10-17 09:15:271198parcourir

1. Introduction

Veuillez le comprendre en fonction de la position de la couche d'abstraction Socket dans la figure ci-dessous. Socket est une couche d'abstraction logicielle intermédiaire pour la communication entre la couche application et la suite de protocoles TCP/IP. Dans le modèle de conception, il s'agit d'un modèle de façade, qui encapsule une implémentation complexe derrière l'interface et ne fournit qu'un ensemble d'interfaces simples que les utilisateurs peuvent appeler. Dans les langages de programmation courants, ces interfaces sont généralement créer, lier, écouter, accepter, écrire, lire, fermer, connecter, etc.

2. Exemples

1. Rendu


2. >

Serveur : Serveur.php


<?php
set_time_limit(0);   // 去掉时间限制
ob_implicit_flush(); // 开启强制刷新

// 1. 创建Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

// 2. 绑定端口和IP
socket_bind($socket, &#39;127.0.0.1&#39;, 11279);

// 3. 端口监听
socket_listen($socket);
echo &#39;Server is listening!&#39; . PHP_EOL;

// 4. accept阻塞进程
$connect = socket_accept($socket); // 直到有连接进入,accept才会返回
echo &#39;Client [&#39; . $connect . &#39;] is accessing...&#39; . PHP_EOL;

// 5. 交互
socket_write($connect, &#39;Welcome, visitor! Now you can send message to the server.&#39; . PHP_EOL);
while ($connect) {
	// 获取请求
	$request = socket_read($connect, 1024);
	echo &#39;Client [&#39;. $connect .&#39;] message: &#39; . $request;

	// 关闭连接
	if($request == "bye" . PHP_EOL){
		socket_shutdown($connect);
		break;
	}

	// 发送响应
	$response = &#39;Your sended message: &#39; . $request;
	socket_write($connect, $response);
}

// 6. 销毁Socket
socket_close($socket);
Client : client.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