swoole 高手之路
  • Introduction
  • 简介
  • 入门安装
    • php7 安装
    • swoole 安装
    • ide 提示工具安装
  • 原理概念
    • 需要掌握的基础知识
    • IO 模型
    • TCP 与 UDP
    • TCP 粘包处理
    • 同步 与 异步
    • 进程 与 线程
    • Swoole进程结构
    • swoole的运行模式
    • swoole编程注意事项
    • Socket原理
    • Libevent
  • swoole 基础
    • 网络通信引擎
      • 创建TCP服务器
      • 创建TCP客户端
      • 创建UDP服务器
      • 创建HTTP服务器
      • 创建websocket服务器
    • 异步非堵塞IO
      • 异步文件系统IO
      • 异步Mysql
      • 异步Redis
      • 异步Http/WebSocket客户端
    • 进程 内存 协程
      • swoole进程管理模块
      • swoole 内存操作模块
      • swoole 协程
    • Task进程异步任务
    • 毫秒定时器
  • swoole 高级特性
    • 心跳检测
    • 守护进程、信号和平滑重启
    • mysql连接池
  • swoole 其他
    • nginx+swoole
    • 结合传统框架
  • swoole RPC调用
  • 附录 : 其他资料
    • Zan Extension
    • 资料
Powered by GitBook
On this page
  • 创建UDP服务器
  • 创建UDP客户端

Was this helpful?

  1. swoole 基础
  2. 网络通信引擎

创建UDP服务器

Previous创建TCP客户端Next创建HTTP服务器

Last updated 5 years ago

Was this helpful?

建议先阅读官方文档的以下章节.

创建UDP服务器

<?php

//创建Server对象,监听 0.0.0.0:9501端口
$serv = new swoole_server("0.0.0.0", 9501,SWOOLE_PROCESS,SWOOLE_SOCK_UDP);

//配置
$serv->set([
    'worker_num' => 2, //设置进程
]);

//接收到udp数据的时候触发
$serv->on('Packet',function ($serv,$data,$clientInfo){
        //var_dump($data,$clientInfo);
        $serv->sendto($clientInfo['address'],$clientInfo['port'],'服务端udp数据包');
});

//启动服务器
$serv->start();

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

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

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

创建UDP客户端

$client = new swoole_client(SWOOLE_SOCK_UDP, SWOOLE_SOCK_SYNC);

//不计后果
var_dump($client->sendto('127.0.0.1', 9501,'udp数据'));
//从服务端接收数据
$response = $client->recv();

// 输出接受到的数据
echo $response . PHP_EOL;
创建UDP服务器