创建UDP服务器

建议先阅读官方文档的以下章节.

创建UDP服务器

<?php

//创建Server对象,监听 0.0.0.0:9501端口
$serv = new swoole_server("0.0.0.0", 9501,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);

//配置
$serv->set([
    'worker_num' => 2, //设置进程
]);

//接收到udp数据的时候触发
$serv->on('Packet',function ($serv,$data,$clientInfo){
        //var_dump($data,$clientInfo);
        $serv->sendto($clientInfo['address'],$clientInfo['port'],'服务端udp数据包');
});

//启动服务器
$serv->start();

UDP服务器与TCP服务器不同,UDP没有连接的概念。启动Server后,客户端无需Connect,直接可以向Server监听的9502端口发送数据包。对应的事件为onPacket。

  • $clientInfo是客户端的相关信息,是一个数组,有客户端的IP和端口等内容

  • 调用$server->sendto方法向客户端发送数据

创建UDP客户端

$client = new swoole_client(SWOOLE_SOCK_UDP, SWOOLE_SOCK_SYNC);

//不计后果
var_dump($client->sendto('127.0.0.1', 9501,'udp数据'));
//从服务端接收数据
$response = $client->recv();

// 输出接受到的数据
echo $response . PHP_EOL;

Last updated