Swoole
  1. 入门
    1. Swoole - 入门 - 安装
    2. Swoole - 入门 - 创建TCP服务器
    3. Swoole - 入门 - 创建UDP服务器
    4. Swoole - 入门 - 创建HTTP服务器
    5. Swoole - 入门 - 创建websocket服务器
    6. Swoole - 入门 - 创建同步TCP客户端
    7. Swoole - 入门 - 创建异步TCP客户端
    8. Swoole - 入门 - 网络通信协议设计
    9. Swoole - 入门 - 使用异步客户端(MySQL,Redis,Http)

Swoole - 入门 - 创建UDP服务器

程序员日记      2019-09-18

创建UDP服务器

server.php

<?php
//创建Server对象,监听 192.168.0.99:9502端口,类型为SWOOLE_SOCK_UDP
$serv = new swoole_server("192.168.0.99", 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安装

下载

wget https://nchc.dl.sourceforge.net/project/netcat/netcat/0.7.1/netcat-0.7.1.tar.gz

解压配置编译

tar -zxvf netcat-0.7.1.tar.gz 
./configure
make && make install

测试UDP服务器连接

netcat -u 192.168.0.99 9502
hello
Server: hello