Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan fungsi terbina dalam PHP untuk pengaturcaraan rangkaian?

Bagaimana untuk menggunakan fungsi terbina dalam PHP untuk pengaturcaraan rangkaian?

WBOY
WBOYasal
2024-04-23 08:27:01954semak imbas

Artikel ini meneroka langkah-langkah untuk pengaturcaraan rangkaian menggunakan fungsi terbina dalam PHP, termasuk mencipta soket, mengikat soket, mendengar soket, menerima sambungan pelanggan, menghantar dan menerima data dan menutup soket.

如何使用 PHP 内置函数进行网络编程?

Menggunakan fungsi terbina dalam PHP: Pengaturcaraan Rangkaian

PHP menyediakan satu siri fungsi terbina dalam yang membolehkan anda melakukan pengaturcaraan rangkaian dengan mudah. Artikel ini meneroka contoh praktikal menggunakan fungsi ini untuk mencipta dan menggunakan soket rangkaian.

Buat soket rangkaian

Fungsi socket_create() socket_create() 函数用于创建网络套接字。它需要三个参数:

  • $domain - 套接字的域(例如 AF_INET 适用于 IPv4)
  • $type - 套接字的类型(例如 SOCK_STREAM 适用于 TCP)
  • $protocol - 要使用的协议(对于 TCP,通常为 0
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
if (!$socket) {
    die("socket_create() 失败: " . socket_strerror(socket_last_error()));
}

绑定网络套接字

socket_bind() 函数将套接字绑定到一个特定的地址和端口。您需要提供以下参数:

  • $socket - 要绑定的套接字
  • $address - 要绑定的 IP 地址
  • $port - 要绑定的端口
$address = "127.0.0.1";
$port = 8080;
if (!socket_bind($socket, $address, $port)) {
    die("socket_bind() 失败: " . socket_strerror(socket_last_error()));
}

监听网络套接字

socket_listen() 函数将套接字设置为监听状态。它需要提供以下参数:

  • $socket - 要监听的套接字
  • $backlog - 队列中排队的最大连接数
$backlog = 5;
if (!socket_listen($socket, $backlog)) {
    die("socket_listen() 失败: " . socket_strerror(socket_last_error()));
}

接受客户端连接

socket_accept() 函数将阻塞,直到客户端连接到来。它返回一个新的套接字表示该连接。

$client_socket = socket_accept($socket);
if (!$client_socket) {
    die("socket_accept() 失败: " . socket_strerror(socket_last_error()));
}

发送和接收数据

socket_send()socket_recv() digunakan untuk mencipta soket rangkaian. Ia memerlukan tiga parameter:

  • $domain - domain soket (cth. AF_INET untuk IPv4)
  • $type - jenis soket (cth. SOCK_STREAM untuk TCP)
  • $protocol - protokol untuk digunakan ( Untuk TCP, biasanya 0)
$data = "Hello, client!";
if (!socket_send($client_socket, $data, strlen($data), 0)) {
    die("socket_send() 失败: " . socket_strerror(socket_last_error()));
}
Ikat soket rangkaian

socket_bind() fungsi

Ikat soket ke alamat dan port tertentu. Anda perlu menyediakan parameter berikut:

  • $socket - soket untuk diikat
  • $address - soket untuk diikat Alamat IP
  • $port - port untuk diikat
$buffer = socket_recv($client_socket, 1024, 0);
if (!$buffer) {
    die("socket_recv() 失败: " . socket_strerror(socket_last_error()));
}
soket rangkaian mendengar

socket_listen() Fungsi

menetapkan soket kepada keadaan mendengar. Ia perlu menyediakan parameter berikut:

  • $socket - soket untuk mendengar
  • $backlog - yang beratur Bilangan maksimum sambungan
socket_close($client_socket);
Terima sambungan klien

socket_accept() Fungsi

akan menyekat sehingga sambungan klien tiba. Ia mengembalikan soket baharu yang mewakili sambungan.

socket_close($socket);
Hantar dan terima data

🎜socket_send() dan socket_recv() fungsi 🎜 digunakan untuk menghantar dan menerima data melalui soket. 🎜🎜🎜Menghantar data: 🎜🎜rrreee🎜🎜Terima data: 🎜🎜rrreee🎜Tutup soket rangkaian🎜🎜Selepas menyelesaikan operasi soket rangkaian, anda harus menutupnya. 🎜🎜🎜Tutup soket pelanggan: 🎜🎜rrreee🎜🎜Tutup soket pelayan: 🎜🎜rrreee

Atas ialah kandungan terperinci Bagaimana untuk menggunakan fungsi terbina dalam PHP untuk pengaturcaraan rangkaian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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