服务端
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.phpServer client send data : hello World![client]## 再次查看客户端[server] php udp_server.phpudp 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)}
