この記事では、php を使用したシンプルなソケットの例を共有します。入力文字列を受け取り、処理して、この文字列をクライアントに返す TCP サービスを実装します。
ソケットサーバーを生成する
リーリーヒント: 上記のコードを実行するには、コマンド プロンプトを使用する必要があります。その理由は、ここでは Web ページではなくサーバーが生成されるためです。 Web ブラウザを使用してこのスクリプトを実行しようとすると、30 秒の制限を超える可能性が高くなります。以下のコードを使用して無限の実行時間を設定できますが、コマンド プロンプトを使用して実行することをお勧めします。
set_time_limit(0);
コマンド プロンプトでのこのスクリプトの簡単なテスト:
Php.exeソケット_サーバー.php
システム環境変数に php インタープリターへのパスを設定していない場合は、php.exe への詳細なパスを指定する必要があります。サーバーを実行するときは、Telnet 経由でポート 1234 に接続してサーバーをテストできます。
上記のサーバー側には 3 つの問題があります:
1. 複数の接続を受け入れることはできません。
2. 1 つのコマンドだけで完了します。
3. Web ブラウザーからこのサーバーに接続することはできません。
この最初の問題は解決するのが簡単です。アプリケーションを使用して毎回サーバーに接続できます。しかし、次の問題は、Web ページを使用してサーバーに接続する必要があることですが、これはさらに困難です。サーバーに接続を受け入れさせ、クライアントにデータを書き込み (書き込む必要がある場合)、接続を閉じて次の接続を待つことができます。
前のコードに基づいてそれを改善し、次のコードを生成して新しいサーバーを作成します。 リーリー
このサーバーは何をすべきですか?ソケットを初期化し、データを送受信するためにキャッシュを開きます。接続を待機し、接続が確立されると、サーバー側の画面に「ソケットが接続されました」と表示されます。このサーバーはバッファをチェックし、バッファ内にデータがある場合は、接続されているコンピュータにデータを送信します。次に、このデータに対する受け入れメッセージを送信し、メッセージを受け入れると、メッセージをデータに保存し、接続されているコンピュータにメッセージを認識させ、最後に接続を閉じます。接続が閉じられると、サーバーは次の接続の処理を開始します。ソケットクライアントを生成する
2 番目の問題への対処は簡単です。 PHP ページを生成し、ソケットに接続し、データをそのキャッシュに送信して処理する必要があります。その後、処理されたデータが待機しているので、データをサーバーに送信できます。別のクライアント接続では、そのデータが処理されます。
次の例はソケットの使用方法を示しています:
リーリー
このコード例は、クライアントがサーバーに接続する様子を示しています。クライアントはデータを読み取ります。これがこのサイクルで到着する最初の接続である場合、サーバーは「NO DATA」をクライアントに送り返します。これが発生した場合、クライアントは接続の最上位にあります。クライアントはデータをサーバーに送信し、データはサーバーに送信され、クライアントは応答を待ちます。応答を受信すると、応答を画面に書き込みます。 興味がありそうな記事