php的socket編程怎樣實(shí)現(xiàn)

PHP
小樊
81
2024-10-17 20:56:06
欄目: 編程語言

在PHP中,可以使用socket編程來創(chuàng)建網(wǎng)絡(luò)通信。以下是一個(gè)簡(jiǎn)單的PHP Socket服務(wù)器和客戶端示例:

服務(wù)器端示例:

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

// 綁定 socket 到地址和端口
$address = "127.0.0.1";
$port = 12345;
socket_bind($socket, $address, $port);

// 監(jiān)聽連接
socket_listen($socket);
echo "Server listening on $address:$port...\n";

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

    // 讀取并輸出客戶端發(fā)送的數(shù)據(jù)
    $data = socket_read($client, 1024);
    echo "Received from client: $data\n";

    // 向客戶端發(fā)送數(shù)據(jù)
    $response = "Hello from server!";
    socket_write($client, $response);

    // 關(guān)閉連接
    socket_close($client);
}

// 關(guān)閉服務(wù)器 socket
socket_close($socket);
?>

客戶端示例:

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

// 連接到服務(wù)器
$address = "127.0.0.1";
$port = 12345;
socket_connect($socket, $address, $port);

// 向服務(wù)器發(fā)送數(shù)據(jù)
$message = "Hello from client!";
socket_write($socket, $message);

// 讀取并輸出服務(wù)器發(fā)送的數(shù)據(jù)
$data = socket_read($socket, 1024);
echo "Received from server: $data\n";

// 關(guān)閉連接
socket_close($socket);
?>

首先運(yùn)行服務(wù)器端代碼,然后運(yùn)行客戶端代碼。服務(wù)器端將監(jiān)聽來自客戶端的連接,并在接收到連接后發(fā)送和接收數(shù)據(jù)??蛻舳藢⑦B接到服務(wù)器,發(fā)送一條消息,然后接收并輸出服務(wù)器的響應(yīng)。

0