Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk melaksanakan pelayan TCP menggunakan PHP

Bagaimana untuk melaksanakan pelayan TCP menggunakan PHP

PHPz
Lepaskan: 2023-04-19 11:17:10
asal
2553 orang telah melayarinya

Dengan perkembangan pesat Internet, permintaan untuk aplikasi rangkaian juga semakin tinggi. Untuk menjadikan halaman web lebih kaya dan menarik, banyak laman web telah mula menggunakan soket untuk mencapai komunikasi masa nyata pada rangkaian. Protokol TCP/IP (Transmission Control Protocol/Internet Protocol) sering digunakan untuk melaksanakan aplikasi tersebut. Dalam proses ini, PHP, sebagai bahasa pengaturcaraan web yang popular, juga menunjukkan kelebihannya.

Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan pelayan TCP.

1. Protokol TCP/IP

Protokol TCP/IP ialah protokol standard industri dan salah satu protokol yang paling banyak digunakan di Internet. Ia menyediakan cara untuk memindahkan data antara komputer yang berbeza. Protokol ini terdiri daripada dua protokol: TCP dan IP. Protokol TCP adalah berorientasikan sambungan dan boleh memastikan penghantaran data yang boleh dipercayai. Protokol IP adalah berorientasikan tanpa sambungan dan boleh mengendalikan penghalaan rangkaian antara komputer.

2. Pengaturcaraan Soket PHP

PHP menyediakan perpustakaan pengaturcaraan Socket, yang sudah disertakan dalam pemasangan PHP standard dan tidak memerlukan sebarang sokongan komponen. Kita hanya perlu menggunakan fungsi 'socket_create()' untuk mencipta soket. Contohnya:

<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
?>
Salin selepas log masuk

Antaranya, parameter pertama 'AF_INET' bermaksud menggunakan keluarga alamat IPv4 untuk komunikasi, parameter kedua 'SOCK_STREAM' bermaksud menggunakan protokol penstriman untuk komunikasi dan parameter ketiga 'SOL_TCP ' Menunjukkan penggunaan protokol TCP.

Seterusnya, kita boleh menggunakan fungsi ‘socket_bind()’ untuk mengikat Soket ke alamat rangkaian dan nombor port tertentu. Contohnya:

<?php
socket_bind($socket, &#39;127.0.0.1&#39;, 8888);
?>
Salin selepas log masuk

Antaranya, parameter pertama ialah deskriptor fail soket, parameter kedua ialah alamat jenis rentetan, menunjukkan alamat IP yang dipantau pelayan, dan parameter ketiga ialah The listening nombor port.

Kemudian, kita boleh menggunakan fungsi ‘socket_listen()’ untuk membenarkan pelayan mula mendengar permintaan sambungan. Contohnya:

<?php
socket_listen($socket);
?>
Salin selepas log masuk

Akhir sekali, kami menggunakan fungsi ‘socket_accept()’ untuk menerima dan memproses permintaan sambungan pelanggan. Contohnya:

<?php
$client_socket = socket_accept($socket);
?>
Salin selepas log masuk

3. Contoh

Seterusnya, mari kita lihat pelaksanaan pelayan PHP TCP yang lengkap, dan ia boleh membenarkan berbilang pelanggan menyambung pada masa yang sama.

<?php
$address = "127.0.0.1";
$port = 2020;

// 创建Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n");
}

// 绑定Socket到指定地址
$result = socket_bind($socket, $address, $port);
if ($result === false) {
    die("socket_bind() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n");
}

// 开始监听连接请求
$result = socket_listen($socket, 3);
if ($result === false) {
    die("socket_listen() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n");
}

echo "Server listening for incoming connections...\n";

// 处理客户端的连接请求
do {
    $client_socket = socket_accept($socket);
    if ($client_socket === false) {
        echo "socket_accept failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";
        break;
    }

    // 从客户端读取数据
    $input = socket_read($client_socket, 1024);
    $input = trim($input);
    echo "Received message: {$input}\n";

    // 向客户端发送响应
    $output = sprintf("Server received: %s", $input);
    socket_write($client_socket, $output, strlen($output));

    socket_close($client_socket);
} while (true);

socket_close($socket);
?>
Salin selepas log masuk

Contoh di atas mencipta pelayan TCP yang mendengar pada alamat mesin tempatan 127.0.0.1 dan nombor port 2020. Apabila pelanggan menyambung ke pelayan, data dibaca daripada klien dan output ke konsol, dan respons dihantar kepada klien.

4. Ringkasan

Artikel ini memperkenalkan cara menggunakan PHP untuk melaksanakan pelayan TCP yang mudah, dan dengan itu memahami prinsip asas protokol TCP/IP dan idea pengaturcaraan Socket. Tidak seperti protokol HTTP, protokol TCP mempunyai prestasi dan kestabilan yang sangat baik dalam penghantaran data dan boleh memenuhi keperluan aplikasi Internet untuk komunikasi masa nyata. Bagi pembangun yang biasa dengan pengaturcaraan PHP, menggunakan PHP untuk melaksanakan pelayan TCP boleh memudahkan proses pembangunan pengaturcaraan rangkaian dan meningkatkan kecekapan pembangunan.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pelayan TCP menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan