创建UDP服务器

程序代码

udp_server.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->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 方法向客户端发送数据

启动服务

php udp_server.php

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

netcat -u 127.0.0.1 9502
hello
Server: hello

  • 都是流氓

    netcat 就是 nc 具体说明见 http://www.jb51.net/LINUXjishu/409856.html

  • 大头

    安装netcat。centos下: yum -y install yum -y install nc.x86_64 使用就是直接 nc -u 127.0.0.1 9502

  • Z-虫子

    udp没有连接的概念,要做心跳吗,怎么判断要发送的对象是否在线

  • 陈丽丽-沪商财富

    nc -u 127.0.0.1 9502

  • easyCert客服

    这个找不到命令

  • 机器人

    当用户断开后,服务端怎么处理呀。

  • hulk

    centos下安装nc应该是 yum -y install nc ,而且UDP是无连接传输,所以coonect事件是监控不到的

  • 莜游君

    MAC OS 的话brew install netcat就能用了 只是怎么连接到具体的地址 比如要连接到127.0.0.1:8080/api/get_depth

  • 盛

    为何跑创建udp服务的那个demo,端口打不开呢?tcp服务能起来

  • 别闹i

    UDP服务只能通过 netcat 来连接吗? telnet不可以吗? MAC OS

  • seraph

    telnet协议用的tcp