ホームページ バックエンド開発 PHPチュートリアル PHPのソケットプログラミング機能の使い方は?

PHPのソケットプログラミング機能の使い方は?

Jun 03, 2023 pm 09:51 PM
php 説明書 ソケットプログラミング

PHP は Web 開発で広く使用されているプログラミング言語であり、多くのネットワーク プログラミング アプリケーションをサポートしています。中でもソケットプログラミングは、ネットワーク通信を実現するためによく使われる手法で、プログラムがプロセス間通信を実現し、ネットワークを介してデータを送信することができます。

この記事では、PHPのソケットプログラミング機能の使い方を紹介します。

1. ソケット プログラミングの概要

ソケット (ソケット) は抽象的な概念です。ネットワーク通信におけるオープン ポートを表します。プロセスは、データを交換するためにポートに接続する必要があります。他のプロセス。

ソケットは一般に、TCP ソケットと UDP ソケットの 2 つのタイプに分類されます。 TCP ソケットは信頼性の高い接続指向の通信に適しており、UDP ソケットはコネクションレス通信、データ パケットが比較的小さく遅延の影響を受けやすいアプリケーションに適しています。

2. PHP を使用したソケット プログラミング

PHP でソケット プログラミングを使用するには、socket_create() 関数を呼び出してソケット接続を作成し、次に必要に応じてソケット オプションを設定し、最後にソケット_connect() を呼び出す必要があります。 ) 関数またはソケットバインド() 関数を使用して、アドレスとポートをさらに接続またはバインドします。最後に、socket_close() 関数を呼び出して切断します。

1. ソケット接続の作成

socket_create() 関数はソケット接続を作成できます。

$socket = socket_create(AF_INET, SOCK_STREAM, 0);
ログイン後にコピー

最初のパラメータはアドレス ファミリ ipv4 を指定し、2 番目のパラメータはソケット タイプをストリーミング ソケット (ソケット ストリーム) として指定します。 3 番目のパラメータは通常 0 で、デフォルトのプロトコル (TCP/IP) を使用することを意味します。

2. ソケット オプションの設定

socket_set_option() 関数を使用して、再利用アドレスの設定などのソケット オプションを設定できます。

socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
ログイン後にコピー

このうち、最初のパラメータはソケット接続リソースで、2 番目のパラメータはソケット レベルを表します。たとえば、ソケット オプションを設定するには SOL_SOCKET レベルを使用する必要があります。3 番目のパラメータは、設定するオプションを指定します。 、SO_REUSEADDR オプションは 1 に設定されており、アドレスの再利用を有効にします。

3. アドレスとポートの接続またはバインド

socket_connect() 関数はリモート Socket サーバーへの接続に使用され、socket_bind() 関数はローカル Socket サーバー アドレスのバインドに使用されます。そして港。

たとえば、socket_bind() 関数を使用して、ローカル アドレス 127.0.0.1 とポート 8888 をバインドします。

socket_bind($socket, '127.0.0.1', 8888);
ログイン後にコピー

4. 接続リクエストのリッスン

socket_listen() 関数を使用して、接続リクエストのリッスンを開始します。

socket_listen($socket);
ログイン後にコピー

5. データの受信と送信

socket_accept() 関数を使用して接続要求を受信し、データの読み取りや書き込みなどのデータ転送操作を実行します。

$client = socket_accept($socket);
$bytes = socket_recv($client, $data, 1024, 0);
socket_send($client, $data, $bytes, 0);
ログイン後にコピー

このうち、socket_recv() 関数はデータの受信に使用できます。最初のパラメータはソケット接続リソース、2 番目のパラメータは受信したデータの保存に使用され、3 番目のパラメータは最大読み取り値を表しますデータの長さ、4 番目のパラメータは通常 0 で、ソケット フラグが使用されないことを意味します。

socket_send() 関数を使用して、クライアントにデータを送信できます。

6. 接続を閉じる

socket_close() 関数を使用して接続を閉じます。

socket_close($socket);
ログイン後にコピー

3. サンプル コード

以下は、ソケット通信用のソケット サーバーとクライアントの簡単な完全なサンプル コードです。

サーバー側:

<?php
$host = "127.0.0.1";
$port = 8888;

// 创建Socket连接
$socket = socket_create(AF_INET, SOCK_STREAM, 0);

// 设置Socket选项
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);

// 绑定本地地址和端口
if (!socket_bind($socket, $host, $port)) {
    echo "Socket bind failed!";
}

// 监听连接请求
socket_listen($socket);

// 接受连接请求
$client = socket_accept($socket);

// 读取数据
$msg = socket_read($client, 1024);

// 输出接收到的数据
echo "Received message: {$msg}";

// 向Client发送数据
$response = "Message from Server: Hi Client!";
socket_write($client, $response, strlen($response));

// 关闭连接
socket_close($client);
socket_close($socket);
?>
ログイン後にコピー

クライアント側:

<?php
$host = "127.0.0.1";
$port = 8888;

// 创建Socket连接
$socket = socket_create(AF_INET, SOCK_STREAM, 0);

// 连接到Server
if (!socket_connect($socket, $host, $port)) {
    echo "Socket connect failed!";
}

// 向Server发送数据
$message = "Hello Server!";
socket_write($socket, $message, strlen($message));

// 接收Server的响应
$response = socket_read($socket, 1024);

// 输出Server响应
echo "Received message: {$response}";

// 关闭连接
socket_close($socket);
?>
ログイン後にコピー

IV. 概要

この記事では、PHP でソケット プログラミングを使用してネットワーク通信を実現する方法を紹介します。ソケット接続の作成、ソケット オプションの設定、ソケット アドレスとポートの接続/バインド、データの送受信、ソケット接続の終了、その他の手順が含まれます。

ソケット プログラミングは、プロセスがネットワーク上で通信し、データの相互運用性と交換を実現できるようにする、非常に重要で一般的に使用されるネットワーク プログラミング テクノロジです。この記事の導入により、読者は PHP での Socket プログラミングの使用方法をある程度理解し、習得できると思います。

以上がPHPのソケットプログラミング機能の使い方は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

See all articles