目次
PHPでのソケット通信機構例の詳細説明、ソケットの詳細説明
ホームページ バックエンド開発 PHPチュートリアル phpによるソケット通信機構例の詳細説明、socket_PHPチュートリアルの詳細説明

phpによるソケット通信機構例の詳細説明、socket_PHPチュートリアルの詳細説明

Jul 13, 2016 am 10:10 AM
php socket

PHPでのソケット通信機構例の詳細説明、ソケットの詳細説明

この記事の例では、php でのソケット通信メカニズムと使用法について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:

1.ソケットとは

ソケットとは何ですか? いわゆるソケットは通常「ソケット」とも呼ばれ、IP アドレスとポートを表すために使用されます。アプリケーションは通常、「ソケット」を通じてネットワークにリクエストを送信するか、ネットワークリクエストに応答します。端的に言えば、それはコミュニケーションのメカニズムです。これは、銀行、通信部門、その他の部門の電話顧客サービス部門に似ています。電話をかけると、顧客サービス部門がソケットのサーバー側に相当し、誰かが通話を終了するまではクライアント側に相当します。もちろん、お客様サービス部門の電話交換機が重複することはありません。

ソケットがどのように機能するかを説明するために、以下に例を示します。アプリケーション層をベースに開発する場合、必ずしも原理を理解する必要はありませんが、知っていたほうが良いでしょう。インターネット上にはソケットに関する php API があります。置くだけで使えます。

2. ソケットサーバーserver.php

コードをコピーします コードは次のとおりです:
// サーバー側のソケットを作成します
$tcp = getprotobyname("tcp"); $socket = ソケット作成(af_inet, sock_stream, $tcp); socket_bind($socket, '127.0.0.1', 10008); //監視対象のポートをバインドします
socket_listen($socket); //リスニングポート

//データを初期化し、クライアントと通信します
$buffer = "接続"; while (true) {
// ソケット接続を受け入れます
$connection = ソケット_accept($socket); If(!$connection){
「接続失敗」をエコーし​​ます
}その他{
エコー「ソケット接続」を使用して外出します // 情報データをクライアントに送信します
if ($buffer != "") {
echo "クライアントにデータを送信します"; ソケット_write($connection, $buffer . " "); echo "ソケットに書き込みました";                                                                                               echo "バッファーにデータがありません" ;                                                                                         // クライアントから情報を取得します
while ($data = @socket_read($connection, 1024, php_normal_read)) {
printf( "buffer:"。$ data。 ""); //情報を取得し、クライアントにフィードバックを送信します
socket_write($connection, "受信した情報"); }
}

ソケット_クローズ($接続)
//ソケットを閉じる
printf("ソケットを閉じました "); }
?>


3. ソケットクライアント client.php




コードをコピーします

コードは次のとおりです:
// クライアントのソケット接続を確立します
$ソケット = ソケット_作成(af_inet, sock_stream, sol_tcp); $connection =ソケット_connect($socket, '127.0.0.1', 10008); //サーバー側のソケットに接続します

while ($buffer = @socket_read($socket, 1024, php_normal_read)) {
//サーバーはクライアントにステータスを伝えます
If (preg_match("/not connect/",$buffer)) {
エコー「接続しないでください」 壊す; } その他 {
//サーバーから送信された情報
エコー "バッファデータ: " . $buffer ;
echo "ソケットへの書き込み"; // 顧客の情報をチャネルに書き込み、サーバーに渡します
If (!socket_write($socket, "何らかのデータ ")) {
echo "書き込みに失敗しました ";                                                                            //情報を受信した後、サーバーは応答情報を返します
while ($buffer =socket_read($socket, 1024, php_normal_read)) {
echo "サーバーに送信されました: サーバーからのデータ応答は次のとおりでした: "
; }

}
}
?>


4. 通信機構の図(待機時間に関係なく自動的にソケットを閉じる)


簡単な説明。説明する前に、サーバーとクライアントを実行するために php コマンドを使用する必要がある理由を説明します。これにより、クライアントにはブラウザ上でアクセスできるようになり、少なくとも接続が確立されます。タイムアウト。これはなぜでしょうか? ソケットを作成すると、クライアントが接続を希望しているかどうかが常に監視されるからです。
ソケット通信の確立には 2 つのソケット チャネルが必要です。1 つはサーバーによって作成され、もう 1 つはクライアントによって作成されます。
1行目、サーバーはソケットチャネルを作成し、情報をキャッシュに置き、クライアントの接続を待ちます 2 行目、クライアントはソケット チャネルを作成し、サーバーに接続し、通信用のサーバー側の情報を取得し、送信する情報をチャネルに送信します

3 行目、サーバーはクライアントから情報を取得し、私が情報を受け取ったことをクライアントに伝えます。伝えたい情報をチャンネルに送ってください

4行目、クライアントはサーバーから確認情報を取得します

この時点で通信は完全に確立されており、データ送信完了後、サーバーはソケット通信を切断します。

1 ソケットサーバーを実行します

コードをコピーします

コードは次のとおりです:


[root@blackghost zhangy]# /usr/local/php/bin/php -a /home/zhangy/www/test2/server.php

インタラクティブモードが有効になりました これに関してどのような取り組みをしましたか? a はポート 10008 をリッスンしました

コードをコピーします

コードは次のとおりです:

[zhangy@blackghost ~]$ netstat -an |grep listen |grep 10008

tcp 0 0 127.0.0.1:10008 0.0.0.0:* 聞いてください [zhangy@blackghost ~]$
b 情報をキャッシュに送信します

コードをコピーします

コードは次のとおりです:

$buffer = "connect";

上のコードを見てください

2 ソケットクライアントを実行します
コードをコピーします
コードは次のとおりです:

[root@blackghost zhangy]# /usr/local/php/bin/php -a /home/zhangy/www/test2/client.php
インタラクティブモードが有効になりました

バッファデータ: 接続 ソケットへの書き込み サーバーに送信されました: 一部のデータ
サーバーからの応答: 情報を受信しました

3 サーバーに戻ります



コードをコピーします

コードは次のとおりです:

[root@blackghost zhangy]# /usr/local/php/bin/php -a /home/zhangy/www/test2/server.php
インタラクティブモードが有効になりました
ソケットが接続されました クライアントにデータを送信 ソケットに書き込みました バッファ: いくつかのデータ
ソケットを閉じました

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

www.bkjia.com本当http://www.bkjia.com/PHPjc/936797.html技術記事 PHPのソケット通信の仕組みを例を交えて詳しく解説 ソケットの詳細を解説 この記事では、PHPのソケット通信の仕組みと使い方について例を交えて解説します。参考のためにみんなで共有してください。具体的な分析は以下の通りです: 1. ソケットとは...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

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:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

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

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

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

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

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

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:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles