現在の位置: ホーム> 最新記事一覧> socket_accept() + socket_write():クライアントに応答を送信します

socket_accept() + socket_write():クライアントに応答を送信します

M66 2025-05-20

PHPでは、ソケットプログラミングは、カスタムサーバープログラムの構築に適した、基礎となるネットワーク通信方法です。この記事では、socket_accept()関数を使用してクライアント接続を受け入れ、 socket_write()関数を介してクライアントに応答を送信する方法を紹介します。

1.ソケットを作成し、ポートをバインドします

まず、ソケットリソースを作成し、指定されたIPアドレスとポートにバインドして、クライアントリクエストをリッスンする必要があります。

 <?php
// aを作成しますTCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("socket_create() 失敗: " . socket_strerror(socket_last_error()) . "\n");
}

// バインドIPおよびポート,假设バインド本地IPおよびポート8080
$bind = socket_bind($socket, "0.0.0.0", 8080);
if ($bind === false) {
    die("socket_bind() 失敗: " . socket_strerror(socket_last_error($socket)) . "\n");
}

2。接続を聞いて受け入れます

バインディングが成功した後、 socket_listen()を呼び出してリスニングを開始し、 socket_accept()を使用してブロックしてクライアントが接続するのを待ちます。

 // 監視を開始します,最も許可されています5接続用に並んでいます
socket_listen($socket, 5);
echo "サーバーの起動,クライアント接続を待っています...\n";

while (true) {
    // 阻塞クライアント接続を待っています
    $clientSocket = socket_accept($socket);
    if ($clientSocket === false) {
        echo "socket_accept() 失敗: " . socket_strerror(socket_last_error($socket)) . "\n";
        continue;
    }

    echo "クライアントが接続されています\n";

3.クライアントリクエストを読み、応答を送信します

クライアント接続を受信した後、クライアントデータはsocket_read()を介して読み取り、 socket_write()を使用してクライアントに応答を送信できます。たとえば、簡単なウェルカムメッセージを送信します。

     // クライアントデータをお読みください,最大読み取り1024バイト
    $input = socket_read($clientSocket, 1024);
    echo "クライアントメッセージを受け取りました: $input\n";

    // 応答データを送信します
    $response = "訪問してくださいm66.netサーバ!\n";
    socket_write($clientSocket, $response, strlen($response));

    // クライアント接続を閉じます
    socket_close($clientSocket);
}

4.サーバーソケットを閉じます

サーバーをシャットダウンする必要がある場合は、 socket_close()を呼び出してリソースをリリースします。

 socket_close($socket);

要約します

上記のコードは、次のことに焦点を当てた単純なPHPソケットベースのサーバーの例を示しています。

  • socket_create()を使用してソケットを作成します。

  • socket_bind()を使用して、IPとポートをバインドします。

  • socket_listen()を使用してリスニングを開始します。

  • socket_accept()を使用して、クライアント接続の待機をブロックします。

  • socket_write()を使用して、クライアントにデータ応答を送信します。

このようにして、PHPネイティブソケットプログラミングを介して基本的なTCPサーバーを構築し、クライアントの接続と通信を柔軟に処理できます。