phpによるソケット通信機構例の詳細説明、socket_PHPチュートリアルの詳細説明
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 コマンドを使用する必要がある理由を説明します。これにより、クライアントにはブラウザ上でアクセスできるようになり、少なくとも接続が確立されます。タイムアウト。これはなぜでしょうか? ソケットを作成すると、クライアントが接続を希望しているかどうかが常に監視されるからです。
1行目、サーバーはソケットチャネルを作成し、情報をキャッシュに置き、クライアントの接続を待ちます 2 行目、クライアントはソケット チャネルを作成し、サーバーに接続し、通信用のサーバー側の情報を取得し、送信する情報をチャネルに送信します
3 行目、サーバーはクライアントから情報を取得し、私が情報を受け取ったことをクライアントに伝えます。伝えたい情報をチャンネルに送ってください
4行目、クライアントはサーバーから確認情報を取得します
この時点で通信は完全に確立されており、データ送信完了後、サーバーはソケット通信を切断します。
1 ソケットサーバーを実行します
コードをコピーします コードは次のとおりです:
[root@blackghost zhangy]# /usr/local/php/bin/php -a /home/zhangy/www/test2/server.php
コードをコピーします
コードは次のとおりです:
[zhangy@blackghost ~]$ netstat -an |grep listen |grep 10008
コードをコピーします
コードは次のとおりです:
上のコードを見てください
[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 プログラミング設計に役立つことを願っています。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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