Heim  >  Artikel  >  Backend-Entwicklung  >  PHP verwendet Beispiele, um zu verstehen, was Socket ist

PHP verwendet Beispiele, um zu verstehen, was Socket ist

一个新手
一个新手Original
2017-10-17 09:15:271232Durchsuche

1. Einführung

Bitte verstehen Sie es anhand der Position der Socket-Abstraktionsschicht in der folgenden Abbildung. Socket ist eine zwischengeschaltete Software-Abstraktionsschicht für die Kommunikation zwischen der Anwendungsschicht und der TCP/IP-Protokollsuite. Es handelt sich um eine Reihe von Schnittstellen. Beim Entwurfsmuster handelt es sich um ein Fassadenmuster, das komplexe Implementierungen hinter Schnittstellen kapselt und nur eine Reihe einfacher Schnittstellen zum Aufrufen durch Benutzer bereitstellt. In gängigen Programmiersprachen sind diese Schnittstellen im Allgemeinen Erstellen, Binden, Abhören, Akzeptieren, Schreiben, Lesen, Schließen, Verbinden usw.

2. Beispiele

1. Rendering

2 >
Server: Server.php

Client: client.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);

Das obige ist der detaillierte Inhalt vonPHP verwendet Beispiele, um zu verstehen, was Socket ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn