検索
ホームページバックエンド開発PHPチュートリアルPHPでソケットを実装する方法を詳しく解説

PHP は Web 開発で広く使用されているサーバー側スクリプト言語ですが、Socket はサーバー アプリケーションまたはクライアント アプリケーションがデータを送受信するために使用できる一般的なインターフェイスです。 PHPはソケットを利用してネットワーク上でTCP/IPプロトコルに基づくソケット通信を行い、Webサーバー上でのデータのやりとりを実現します。

PHP には非常に便利な Sockets 拡張機能が用意されており、この拡張機能を使用すると、Socket プログラミングを簡単に実装できます。ここではPHPでソケットを実装する方法を紹介します。

Sockets 拡張機能のインストール

PHP 5.0.0 バージョン以降、Sockets 拡張機能はデフォルトで PHP に含まれているため、ほとんどの PHP にはすでにこの拡張機能が付属しています。ただし、PHP のバージョンが古すぎる場合、またはこの拡張機能が含まれていない場合は、自分でインストールする必要があります。次のコマンドを使用して Linux にインストールできます:

sudo apt-get install php7.0-sockets

Windows システムを使用している場合は、PHP 公式 Web サイトにアクセスして、対応する拡張ファイルをダウンロードし、その拡張ファイルを php.ini に追加してください。 iniファイル。

ソケット接続の作成

まず、PHP でソケット接続を作成するには、socket_create 関数を使用する必要があります。この関数を呼び出すときは、次の関数を渡す必要があります。

  1. domain: プロトコル ドメイン。一般的に使用されるものは、AF_INET、AF_INET6、AF_UNIX です。最も一般的に使用されるものは、IPv4 プロトコルを表す AF_INET です。IPv6 プロトコルを使用する場合は、 、AF_INET6;
  2. type: type、一般的に使用されるものは SOCK_STREAM、SOCK_DGRAM、SOCK_RAW で、最も一般的に使用されるのは SOCK_STREAM で、ストリームベースの TCP 接続を表します;
  3. protocol : プロトコル。一般的に使用されるのは 0、IPPROTO_TCP、IPPROTO_UDP で、このうち 0 は送信方式の自動選択を示します。

以下は、socket_create 関数を使用して接続を確立する例です:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

接続が正常に作成された後、ソケットをローカル ポートにバインドする必要があります:

socket_bind($socket, 0, 8080);

ここでは、ソケットはローカル IP アドレスとポート番号 8080 にバインドされています。特定の IP アドレスにバインドする場合は、2 番目のパラメーターをその IP アドレスに設定できます。

接続をリッスンする

ソケットがローカル ポートにバインドされたら、クライアント接続リクエストのリッスンを開始できます。これは、socket_listen 関数を使用して実現する必要があります。

socket_listen($socket);

接続リクエストのリッスンを開始する前に、ソケットのいくつかのパラメータを設定したい場合は、socket_set_option 関数を使用できます。例:

socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);

この例では、SO_REUSEADDR オプションを 1 に設定します。これは、ローカル アドレスを再利用できることを意味し、それによって「アドレスはすでに使用されています」エラーを回避します。

接続リクエストの受信

クライアントがソケットに接続する場合は、socket_accept 関数を使用して接続リクエストを受信する必要があります:

$clientSocket = socket_accept($socket);

Whenクライアントが接続すると、この関数はクライアントとの通信に使用できる新しいソケット ハンドルを返します。

データの送受信

ソケット接続が確立されると、クライアントとサーバーは、その間に確立されたソケット接続を介してデータを送受信できます。

  • データの送信

サーバーは、socket_write 関数を使用して、クライアントにデータを送信します。

$msg = "Hello, Client!";
socket_write($clientSocket, $msg, strlen($msg));

この例では、メッセージをクライアントに送信します。クライアント側。

  • データの受信

クライアントはサーバーにデータを送信し、サーバーはsocket_read関数を通じてデータを受信できます:

$msg = socket_read($clientSocket, 1024);

この例では、毎回クライアントから 1024 バイトのデータを受信し、それを $msg 変数に保存します。

socket_read 関数は、クライアントが接続を閉じたことを示す空の文字列を返す場合があることに注意してください。

接続を閉じる

データ転送が完了したら、接続を閉じる必要があります。これは、socket_close 関数を使用して実装する必要があります。

socket_close($socket);
socket_close($clientSocket);

このうち、最初のソケット ハンドルはサーバー ソケットを表し、2 番目のソケット ハンドルはクライアントと確立されたソケット接続を表します。

概要

PHP では、Socket 拡張機能を使用してソケット プログラミングを実現できます。ソケット接続を作成するにはsocket_create関数、ソケットをローカルポートにバインドするにはsocket_bind関数、リクエストのリスニングを開始するにはsocket_listen関数、接続リクエストを受信するにはsocket_accept関数、データを受信するにはsocket_read関数、socket_writeを使用します。データを送信する関数、そして最後に接続を閉じるためのsocket_close関数です。 PHP ソケット プログラミングを学習したい場合は、この記事で提供されている例に基づいて練習できます。

以上がPHPでソケットを実装する方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

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

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、