workman TCP连接粘包

jerrylin

问题描述

使用workman 用于接受充电桩报文连接,目前有遇到粘包问题,大神看看有什么方法解决?
示例如下:错误:684070070013000000000000000000000000000000009945457927420401020200000000003e00000000000000006400000000000000000000000000d0e904000000fa46684070080013000000000000000000000000000000009945457927420402020200000000003d00000000000000005900000000000000000000000000cc7c07000000345a684070090013000000000000000000000000000000009945457927420403020200000000003d00000000000000006300000000000000000000000000d8280400000087c96840700a0013000000000000000000000000000000009945457927420404020200000000003d00000000000000004800000000000000000000000000445c050000009b8f
正确:684070070013000000000000000000000000000000009945457927420401020200000000003e00000000000000006400000000000000000000000000d0e904000000fa46
684070080013000000000000000000000000000000009945457927420402020200000000003d00000000000000005900000000000000000000000000cc7c07000000345a
684070090013000000000000000000000000000000009945457927420403020200000000003d00000000000000006300000000000000000000000000d8280400000087c96
840700a0013000000000000000000000000000000009945457927420404020200000000003d00000000000000004800000000000000000000000000445c050000009b8f

程序代码


$text_worker = new Worker("tcp://0.0.0.0:9879");
$text_worker->uidConnections = array();

$text_worker->count  = 1;
393 4 0
4个回答

nitron

根据充电桩的协议规则自己实现自定义协议进行分包

  • jerrylin 14天前

    包头 长度去拆分吗?
    用缓存的话需要注意哪些?

  • nitron 14天前

    你这看着就是8 + 128,前8应该是设备号之类的,你看充电桩协议来吧,我不知道对方怎么定义的,一般要么是按换行符,要么是按固定长度

  • jerrylin 7天前

    有联系方式不?有兴趣一起解决一下不?有偿

  • nitron 5天前

    忙不过来

  • jerrylin 4天前

    需要大神指导一下,现在遇到问题解决不了?咨询一下

JustForFun

tcp本来就是这样,你要自己处理,协议该怎么解释就怎么取数据

  • 暂无评论
麻麻瓜

https://www.workerman.net/doc/workerman/protocols/how-protocols.html
里面有提到在input函数里返回你要的长度就可以了

  • 暂无评论
lsmir2

可以让AI做

  • 暂无评论
🔝