服务端
udp_server.php
<?php
// 创建Server对象,监听 127.0.0.1:9502端口,类型为 SWOOLE_SOCK_UDP
$server = new Swoole\Server('127.0.0.1', 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);
// UDP 服务器与 TCP 服务器不同,UDP 没有连接的概念。
// 启动 Server 后,客户端无需 Connect,直接向 Server 的 9502 端口发送数据包。
$server->on('Packet', function ($server, $data, $clientInfo) {
echo 'udp request data : ', $data ,"\n";
// 用 $server->sendto 方法向客户端发送数据
// $clientInfo 是客户端的相关信息,是一个数组,有客户端的 IP 和端口等内容
$server->sendto($clientInfo['address'], $clientInfo['port'], "Server ".$data);
var_dump($clientInfo);
});
// 启动服务器
$server->start();
?>
客户端
udp_client_protocol_udp.php
<?php
// 创建一个 UDP 连接
$client = new Swoole\Client(SWOOLE_SOCK_UDP, SWOOLE_SOCK_SYNC);
// 发送到服务端的数据
$client->sendto('127.0.0.1', 9502, "client send data : hello World! ");
// 打印服务端返回的数据
echo $client->recv(), "\n";
?>
执行代码
## 服务端
[server] php udp_server.php
## 客户端
[client] php udp_client_protocol_udp.php
Server client send data : hello World!
[client]
## 再次查看客户端
[server] php udp_server.php
udp request data : client send data : hello World!
array(4) {
["server_socket"]=>
int(3)
["server_port"]=>
int(9502)
["address"]=>
string(9) "127.0.0.1"
["port"]=>
int(40529)
}