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 サイトの他の関連記事を参照してください。