ホームページ  >  記事  >  バックエンド開発  >  PHP は例を使用してソケットとは何かを理解します

PHP は例を使用してソケットとは何かを理解します

一个新手
一个新手オリジナル
2017-10-17 09:15:271243ブラウズ

1. はじめに

下図のSocket抽象化層の位置を踏まえて理解してください。ソケットは、アプリケーション層と TCP/IP プロトコル スイート間の通信のための中間ソフトウェア抽象化層であり、インターフェイスのセットです。デザイン パターンでは、これはファサード パターンであり、インターフェイスの背後に複雑な実装をカプセル化し、ユーザーが呼び出すための単純なインターフェイスのセットのみを提供します。一般的なプログラミング言語では、これらのインターフェイスは通常、作成、バインド、リッスン、受け入れ、書き込み、読み取り、閉じる、接続などです。

2. 例

1. レンダリング

2. コード

サーバー: Server.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.php


りー

以上がPHP は例を使用してソケットとは何かを理解しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。