Rumah  >  Artikel  >  rangka kerja php  >  Pembangunan pekerja: Cara melaksanakan penghantaran data masa nyata berdasarkan protokol UDP

Pembangunan pekerja: Cara melaksanakan penghantaran data masa nyata berdasarkan protokol UDP

PHPz
PHPzasal
2023-11-08 10:28:44987semak imbas

Pembangunan pekerja: Cara melaksanakan penghantaran data masa nyata berdasarkan protokol UDP

Pembangunan Pekerja: Cara melaksanakan penghantaran data masa nyata berdasarkan protokol UDP

Pengenalan:
Dalam pembangunan rangkaian, penghantaran data masa nyata adalah tugas yang sangat penting, terutamanya apabila kecekapan tinggi dan kependaman rendah diperlukan. Penghantaran data masa nyata berdasarkan protokol UDP boleh memenuhi keperluan ini dengan lebih baik kerana ciri-cirinya tanpa sambungan dan tidak boleh dipercayai. Dalam artikel ini, saya akan memperkenalkan cara menggunakan rangka kerja Workerman untuk melaksanakan penghantaran data masa nyata berdasarkan protokol UDP dan memberikan contoh kod khusus.

1. Memperkenalkan rangka kerja Workerman
Untuk menggunakan rangka kerja Workerman untuk melaksanakan penghantaran data masa nyata protokol UDP, anda perlu memperkenalkan rangka kerja ke dalam projek terlebih dahulu. Dengan mengandaikan bahawa kami telah menyepadukan Komposer dalam projek dan memasukkan "workerman/workerman": "^4.0" dalam fail composer.json, kami boleh menggunakan arahan berikut untuk memasang Workerman:

composer install

Selepas pemasangan selesai, kita boleh Memperkenalkan kelas yang sepadan ke dalam kod, contohnya:

gunakan WorkermanWorker

2. Buat pelayan UDP
Seterusnya, kita perlu mencipta pelayan UDP untuk menerima dan memproses data yang dihantar oleh pelanggan. Dalam rangka kerja Workerman, pelayan UDP dilaksanakan dengan mencipta objek Worker. Berikut ialah contoh kod:

$worker = new Worker("udp://0.0.0.0:1234");

// Tetapkan bilangan proses Pekerja
$worker->count = 4;

// Memproses Data yang dihantar oleh pelanggan
$worker->onMessage = function($connection, $data) {

// 处理接收到的数据
// ...

// 发送数据给客户端
$connection->send($response);

};

// Run Worker
Worker::runAll();

Dalam kod di atas , kami mencipta pelayan UDP yang mendengar pada port 1234 mesin tempatan disediakan, dan empat proses Pekerja disediakan untuk mengendalikan permintaan pelanggan. Selepas menerima data pelanggan, pelayan akan memanggil fungsi panggil balik onMessage dan menghantar data yang diterima kepada fungsi ini. Selepas memproses data, hasil pemprosesan boleh dihantar kepada klien melalui kaedah $connection->send.

3. Mulakan pelayan UDP
Selepas menyelesaikan penciptaan pelayan UDP, kita perlu memulakan pelayan untuk mendengar permintaan pelanggan. Untuk memulakan pelayan, anda boleh melaksanakan arahan berikut:

php your_server_script.php start

di mana, your_server_script.php ialah fail skrip pelayan anda.

4. Cipta klien UDP
Selain kod sisi pelayan, kami juga perlu mencipta klien UDP untuk menghantar data ke pelayan. Berikut ialah contoh kod:

$remote_host = '127.0.0.1';
$remote_port = 1234; data ), 0, $remote_host, $remote_port);

socket_close($socket);


Dalam kod di atas, kami menggunakan fungsi socket_create untuk mencipta soket UDP, dan kemudian menggunakan fungsi socket_sendto untuk menghantar data ke alamat yang ditentukan dan pelabuhan pelayan.

5. Jalankan klien UDP

Selepas menyelesaikan penciptaan klien UDP, kami perlu menjalankan klien untuk menghantar data ke pelayan. Untuk menjalankan klien, anda boleh melaksanakan arahan berikut:

php your_client_script.php

di mana, your_client_script.php ialah fail skrip klien anda.

Ringkasan:

Dengan menggunakan rangka kerja Workerman, kami boleh melaksanakan penghantaran data masa nyata dengan mudah berdasarkan protokol UDP. Anda hanya perlu mencipta pelayan dan klien UDP, serta memproses dan menghantar data melalui fungsi panggil balik pelayan untuk menyelesaikan tugas penghantaran data masa nyata. Rangka kerja Workerman menyediakan pelbagai fungsi dan keupayaan, menjadikannya lebih mudah bagi pembangun untuk melaksanakan aplikasi rangkaian berkecekapan tinggi dan kependaman rendah.

Kod rujukan:

Pelayan UDP:

use WorkermanWorker;

$worker = new Worker("udp://0.0.0.0:1234");
$worker->count = 4;
$worker->onMessage = function($connection, $data) {
    // 处理接收到的数据
    // ...
    
    // 发送数据给客户端
    $connection->send($response);
};

Worker::runAll();

Pelanggan UDP:

$remote_host = '127.0.0.1';
$remote_port = 1234;
$data = 'Hello, Server!';

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_sendto($socket, $data, strlen($data), 0, $remote_host, $remote_port);
socket_close($socket);

Atas ialah kandungan terperinci Pembangunan pekerja: Cara melaksanakan penghantaran data masa nyata berdasarkan protokol UDP. 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