请教gateway tcp服务器如何接收完整数据?

hiding

问题描述

客户端那边是TCP协议,无法修改,客户端是一个手环硬件发送类似[3G970502177406D0*TK,#!AMRXXXXXXXXX] 数据(06D0是16进制的数据长度,ARM后面是语音类型的二进制数据),现在服务器端收到的数据,死活拼不出来完整数据,奇了怪了。
我在Event的onmessage前部先保存日志:
$logs = file_get_contents( './log.txt' );
$logs .= PHP_EOL . $message . PHP_EOL;
file_put_contents( './log.txt', $logs );
但是,所有日志合到一起,然后手动处理合并,但是合成后还是错误数据。
我的合并函数确认没有问题,因为已经使用其他正常语音文件合成测试过。
所以想请教下,怎么获取手环端发来的原始数据,然后合并数据,然后再解析(解析我自己可以处理)。
谢谢大神了!

190 1 1
1个回答

walkor

参考workerman手册定制一个协议,input里根据06D0部分数据返回整个包的长度,框架会自动返回一个完整的包。
原始数据可能是二进制数据,不是明文的,所以肉眼看不出数据是否正确,需要转换成16进制对比。

  • 暂无评论
🔝