溫馨提示×

php socket_create如何實現(xiàn)多客戶端通信

PHP
小樊
90
2024-07-29 12:11:12
欄目: 編程語言

要實現(xiàn)多客戶端通信,可以使用PHP的socket_create函數(shù)創(chuàng)建一個主socket,并使用socket_accept函數(shù)接受多個客戶端的連接。然后使用socket_read和socket_write函數(shù)完成客戶端和服務(wù)器之間的通信。

以下是一個簡單的示例代碼,演示如何使用PHP實現(xiàn)多客戶端通信:

// 創(chuàng)建socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

// 綁定地址和端口
socket_bind($socket, '127.0.0.1', 8888);

// 監(jiān)聽連接
socket_listen($socket);

echo "Server started, waiting for clients...\n";

$clients = array();

while (true) {
    $read = array();
    $read[] = $socket;

    foreach ($clients as $client) {
        $read[] = $client;
    }

    // 選擇socket
    socket_select($read, $write, $except, null);

    // 處理新的客戶端連接
    if (in_array($socket, $read)) {
        $newClient = socket_accept($socket);
        $clients[] = $newClient;
        echo "New client connected\n";
    }

    // 處理客戶端消息
    foreach ($clients as $key => $client) {
        if (in_array($client, $read)) {
            $msg = socket_read($client, 1024);
            if ($msg === false) {
                unset($clients[$key]);
                continue;
            }
            echo "Received message: $msg\n";
            // 回復(fù)消息
            socket_write($client, "Server received: $msg\n");
        }
    }
}

// 關(guān)閉socket
socket_close($socket);

以上代碼創(chuàng)建了一個簡單的多客戶端通信的服務(wù)器端,監(jiān)聽地址為127.0.0.1,端口為8888。當(dāng)有新的客戶端連接時,服務(wù)器會輸出"New client connected",并在收到客戶端消息時,打印消息內(nèi)容并回復(fù)客戶端。

請注意,這只是一個簡單的示例,實際應(yīng)用中可能需要進(jìn)行更多的錯誤處理和安全檢查。

0