UDP 服务代码
<?php //创建Server对象,监听 127.0.0.1:9502端口,类型为SWOOLE_SOCK_UDP $serv = new swoole_server("127.0.0.1", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP); #$serv = new swoole_server("127.0.0.1", 9502, SWOOLE_PREOESS, SWOOLE_SOCK_IDP); //监听数据接收事件 $serv->on('Packet', function ($serv, $data, $clientInfo) { $serv->sendto($clientInfo['address'], $clientInfo['port'], "Server ".$data); var_dump($clientInfo); }); //启动服务器 $serv->start();
UDP服务器与TCP服务器不同,UDP没有连接的概念。启动Server后,客户端无需Connect,直接可以向Server监听的9502端口发送数据包。对应的事件为onPacket。
- $clientInfo是客户端的相关信息,是一个数组,有客户端的IP和端口等内容
- 调用
$server->sendto
方法向客户端发送数据
示例:客户端向9502端口发送hellow -> 服务端对应事件为onPacket -> 在sendto根据客户端的IP和端口信息返回数据。
为了更方便服务端var_dump 打印 $clientInfo 数据。
客户端发送和返回
nc -u 127.0.0.1 9502 hellow Server hellow wwww Server wwww
服务端接受返回
php udp_server.php array(4) { ["server_socket"]=> int(3) ["server_port"]=> int(9502) ["address"]=> string(9) "127.0.0.1" ["port"]=> int(50256) } array(4) { ["server_socket"]=> int(3) ["server_port"]=> int(9502) ["address"]=> string(9) "127.0.0.1" ["port"]=> int(50256) }
官网是netcat -u 127.0.0.1 9502
可以yum -y install nc 链接