91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

php socket_accept的實際應用案例

PHP
小樊
84
2024-09-26 23:38:01
欄目: 編程語言

socket_accept() 是 PHP 中用于接受客戶端連接的函數,它通常與 socket_create()socket_bind()socket_listen() 一起使用,以創建一個 TCP 服務器

案例:簡單的聊天室服務器

以下是一個簡單的聊天室服務器的示例,它使用 socket_accept() 來接受客戶端連接,并接收和發送消息:

<?php
// 創建 socket
$server_socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$server_socket) {
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
    exit;
}

// 綁定地址和端口
$server_address = '127.0.0.1';
$server_port = 12345;
if (!socket_bind($server_socket, $server_address, $server_port)) {
    echo "socket_bind() failed.\nReason: " . socket_strerror(socket_last_error($server_socket)) . "\n";
    exit;
}

// 監聽連接
if (!socket_listen($server_socket)) {
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($server_socket)) . "\n";
    exit;
}

echo "Server listening on $server_address:$server_port...\n";

while (true) {
    // 接受客戶端連接
    $client_socket = socket_accept($server_socket);
    if (!$client_socket) {
        echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($server_socket)) . "\n";
        continue;
    }

    // 讀取客戶端發送的消息
    $client_message = socket_read($client_socket, 1024);
    if ($client_message === false) {
        echo "socket_read() failed: reason: " . socket_strerror(socket_last_error($client_socket)) . "\n";
        break;
    }

    // 在聊天室中廣播消息
    $broadcast_message = "Client said: {$client_message}\n";
    foreach ($server_sockets as $socket) {
        if ($socket !== $client_socket) {
            socket_write($socket, $broadcast_message);
        }
    }

    // 關閉客戶端套接字
    socket_close($client_socket);
}

// 關閉服務器套接字
socket_close($server_socket);
?>

在這個示例中,服務器首先創建一個 TCP 套接字,然后綁定到本地地址和端口。接下來,它開始監聽連接,并在接收到客戶端連接時使用 socket_accept() 函數接受連接。服務器讀取客戶端發送的消息,然后在聊天室中廣播消息給所有連接的客戶端。最后,服務器關閉與客戶端的套接字連接,并在完成所有操作后關閉服務器套接字。

0
云南省| 广宁县| 阳原县| 梓潼县| 县级市| 晋州市| 鲁甸县| 连平县| 伊金霍洛旗| 霍山县| 西城区| 清丰县| 宜黄县| 庆城县| 焦作市| 宁强县| 满洲里市| 徐闻县| 藁城市| 宣城市| 巫溪县| 双江| 北安市| 湘乡市| 万安县| 湛江市| 广水市| 当涂县| 襄汾县| 新河县| 永德县| 塔河县| 台北市| 开阳县| 浦城县| 敦化市| 平利县| 柘荣县| 雷山县| 潜江市| 鲁甸县|