坚持
  • 微信

当前位置:首页 > 后端技术 > SWOOLE >

UDP服务器

作者:管理员 时间:2022-12-05 阅读数: 3532人阅读

    什么是UDP?

    UDP即用户数据报协议(User Datagram Protocol)。UDP是一个无连接协议。UDP套接字是一种数据报套接字。UDP数据报不能保证最终到达它们的目的地不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次。与TCP一样,UDP既可以使用IPv4,也可以使用IPv6。

    什么是Swoole UDP Server?

    Swoole底层实现的UDP协议的服务器,使用方式和Swoole TCP Server基本一致,根据UDP的特点,Server上相关操作的API不一样。

    Swoole UDP Server特点:

    1.Swoole\Server是异步服务器,所以是通过监听事件的方式来编写程序的。

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

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

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

    Swoole UDP Server参数:

    参数和Swoole TCP Server基本一致,只需要$socket_type指定为SWOOLE SOCK UDP类型。

    更多信息参考官方文档@doc https://wiki.swoole.com/#/server/methods

    代码示例:

    <?php
        //由于20001端口被tcp占用,这里使用20002
        $server new Swoole\Server("0.0.0.0",20002,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);
            $server->set([worker_num'=>2]);
        $server->on('Packet',function ($server,$data,$clientInfo){
            print_r($cli)
            $server $clientInfo [B]fo['address'],$clientInfo['port'],$data);
        })
        $server->start()