讲师中心 微信公众号
AI工具推荐 视频效率加速

Workerman UDP收不到数据怎么办

轻明君_1956

轻明君_1956

发布时间:2026-09-08 12:43:44

|

840人浏览过

|

来源于php中文网

原创

ss -tuln 不显示 UDP 监听端口,需用 ss -unl 或 ss -tuln | grep udp;若无输出,检查 Workerman 是否启用 UDP Worker、协议是否为 udp://、回调是否为 onPacket 而非 onMessage。

workerman udp收不到数据怎么办

ss -tuln 看不到 UDP 监听端口

UDP 是无连接协议,ss -tuln 查不到监听状态不等于没监听成功——它只显示 TCP 的 LISTEN 状态,UDP 用 ss -tuln | grep udp 或直接 ss -unl | grep :端口。若仍无输出,说明 Workerman 根本没启动 UDP Worker,或构造时协议写错了。

常见错误:new Worker('tcp://0.0.0.0:5678') 写成 tcp 却想收 UDP;正确写法必须是 new Worker('udp://0.0.0.0:5678')。注意:Workerman 的 UDP Worker 不支持 onMessage 回调,必须用 onPacket——写错回调名会导致收包静默失败,日志里也不会报错。

  • 确认启动代码中协议为 udp://,不是 tcp://http:// 或拼写错误(如 udb://
  • 检查是否定义了 $worker->onPacket = function($connection, $data) { ... };,不是 onMessage
  • UDP Worker 不会自动解析 HTTP 头或 WebSocket 握手,客户端发的必须是原始 UDP 数据报文

客户端发了数据,但 onPacket 完全不触发

这通常不是逻辑问题,而是网络层压根没把包送到 Workerman。UDP 比 TCP 更“脆弱”,没有连接状态,内核丢包不通知应用层。

先验证服务端是否真在接收:在服务器上用 tcpdump -i any udp port 5678 -w udp_test.pcap 抓包,再让客户端发一次。如果 tcpdump 能抓到包,说明网络通、防火墙放行、端口没被占;如果抓不到,问题出在路径上。

  • 云服务器必须检查安全组:UDP 规则要显式添加,不能只开 TCP
  • Linux 防火墙(如 firewalld)默认拦 UDP,执行 sudo firewall-cmd --add-port=5678/udp --permanent && sudo firewall-cmd --reload
  • Docker 容器跑 Workerman 时,-p 5678:5678/udp 必须带 /udp 后缀,否则只映射 TCP
  • 客户端若用广播地址(如 192.168.1.255),服务端监听地址必须是 0.0.0.0,且网卡需开启广播接收(多数默认开启)

onPacket 收到数据但内容异常或截断

UDP 数据报有最大传输单元(MTU)限制,以太网典型值为 1500 字节,IPv4 头 + UDP 头占 28 字节,实际 payload 最大约 1472 字节。超过就会被分片——而分片包在中间设备(如路由器、防火墙)容易被丢弃,且 Workerman 默认不重组。

常见现象:客户端发 2000 字节 JSON,$data 只有前 1472 字节,后半截消失;或干脆收不到整包。这不是 Workerman bug,是 UDP 协议特性。

  • 强制客户端控制单包大小 ≤ 1400 字节(留余量),避免分片
  • 不要在 onPacket 里做耗时操作(如数据库写入),UDP 包是“来了就扔”,处理慢会导致后续包被内核丢弃(socket 接收缓冲区溢出)
  • 可用 socket_getopt($connection->getSocket(), SOL_SOCKET, SO_RCVBUF) 查当前接收缓冲区大小,必要时在 onWorkerStart 中调大:socket_set_option($connection->getSocket(), SOL_SOCKET, SO_RCVBUF, 2*1024*1024)

Workerman UDP 和硬件设备联调总丢前几包

类似 STM32 开机 UDP 丢包问题,在 Workerman 侧虽不涉及 PHY 时序,但客户端(尤其是嵌入式)常在链路刚通时密集发包,而 Workerman UDP Worker 的 socket 接收缓冲区初始较小,或系统 UDP 队列积压未清,导致启动瞬间的包被内核丢弃。

这不是 Workerman 配置错误,而是 UDP 通信固有的“竞态窗口”。你看到的是 onPacket 没触发,其实包已被内核悄悄丢掉,连日志都留不下痕迹。

  • 客户端发包前加 100–300ms 延迟,等网络栈稳定(对调试有效,量产需更健壮方案)
  • 服务端启用 SO_REUSEADDR(Workerman 默认已开),避免重启时端口 TIME_WAIT 占用
  • 关键业务别依赖 UDP 单包可靠,设计重传 + 序号机制,或改用 TCP+心跳保活

UDP 的“不可靠”是设计使然,不是故障。排查时永远优先确认:包是否真的抵达服务器网卡(tcpdump)、是否被内核接收(netstat -suUdpInErrors)、是否进了 socket 缓冲区(ss -unlircvbuf 使用率)。绕过这些直接改 PHP 代码,大概率白忙。

相关文章

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

相关专题

更多
tcp和udp的区别
tcp和udp的区别

TCP和UDP的区别,在连接性、可靠性、速度和效率、数据报大小以及适用场景等方面。本专题为大家提供tcp和udp的区别的相关的文章、下载、课程内容,供大家免费下载体验。

423

2023.07.25

udp是什么协议
udp是什么协议

UDP是OSI参考模型中一种无连接的传输层协议。本专题为大家带来udp是什么协议的相关文章,免费提供给大家。

2251

2023.08.08

tcp和udp有什么区别
tcp和udp有什么区别

tcp和udp的区别有:1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。想了解更多tcp相关的内容,可阅读本专题下面的相关文章。

2589

2024.11.14

Workerman安装配置教程
Workerman安装配置教程

Workerman安装配置教程专题提供Workerman安装配置、WebSocket开发、TCP通信、异步编程、高并发服务搭建与PHP实时通信开发教程。

146

2026.05.20

Workerman实时通信与长连接开发教程
Workerman实时通信与长连接开发教程

WWorkerman实时通信与长连接开发教程聚合实时通信、聊天室、长连接、消息推送、AI流式输出等Workerman高并发开发内容。

162

2026.05.20

Workerman异步通信与TCP服务器开发
Workerman异步通信与TCP服务器开发

Workerman异步通信与TCP服务器开发专题整理Workerman异步通信、TCP服务、HTTP服务、WebSocket开发与高并发PHP服务器教程。

127

2026.05.20

NumPy数组创建索引切片与数据选择
NumPy数组创建索引切片与数据选择

本专题整理 NumPy 数组创建、索引、切片与数据选择相关教程,覆盖 np.array、zeros/ones、多维数组形状、基础切片、花式索引、布尔索引、条件筛选、视图与副本等常用场景,帮助读者系统掌握 ndarray 数据构造与高效提取方法。

0

2026.09.21

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

20

2026.09.20

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

0

2026.09.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webman中文手册
Webman中文手册

共0课时 | 0人学习

webman初步使用及后台搭建
webman初步使用及后台搭建

共15课时 | 2.6万人学习

Webman中文手册
Webman中文手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn