Bagaimana untuk menggunakan fungsi terbina dalam PHP untuk pengaturcaraan rangkaian?

WBOY
Lepaskan: 2024-04-23 08:27:01
asal
917 orang telah melayarinya

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()));
}
Salin selepas log masuk

绑定网络套接字

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()));
}
Salin selepas log masuk

监听网络套接字

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

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

接受客户端连接

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

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

发送和接收数据

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

  • $domain - domain soket (cth. AF_INET untuk IPv4)
  • < code> $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()));
}
Salin selepas log masuk

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()));
}
Salin selepas log masuk
soket rangkaian mendengar

socket_listen()< /code> Fungsi </h3> menetapkan soket kepada keadaan mendengar. Ia perlu menyediakan parameter berikut: <p><ul><li><code>$socket - soket untuk mendengar
  • $backlog - yang beratur Bilangan maksimum sambungan
  • socket_close($client_socket);
    Salin selepas log masuk

    Terima sambungan klien

    socket_accept() Fungsi

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

    socket_close($socket);
    Salin selepas log masuk
    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!

    Label berkaitan:
    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
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!