程序代码

udp_server.php

  1. //创建Server对象,监听 127.0.0.1:9502端口,类型为SWOOLE_SOCK_UDP
  2. $serv = new swoole_server("127.0.0.1", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);
  3. //监听数据接收事件
  4. $serv->on('Packet', function ($serv, $data, $clientInfo) {
  5. $serv->sendto($clientInfo['address'], $clientInfo['port'], "Server ".$data);
  6. var_dump($clientInfo);
  7. });
  8. //启动服务器
  9. $serv->start();

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

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

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

启动服务

  1. php udp_server.php

UDP服务器可以使用netcat -u 来连接测试

  1. netcat -u 127.0.0.1 9502
  2. hello
  3. Server: hello

原文:https://wiki.swoole.com/wiki/page/477.html