使用GatewayWorker遇到TCP粘包问题
使用GatewayWorker,设备使用TCP协议进行连接,连接同一端口。
设备本身一共有 3 种设备协议可供选择
- 其中两种设备协议发送的数据有不同的开始和结束标记,并且开始结束标记是ASCII控制符。
- 另外一种设备协议发送的数据没有开始结束标记。
现在设备传输数据出现了粘包现象,想到了定制协议。设备发出的数据没办法进行修改。
- 最开始想到的是text协议。但是设备发出的数据没办法修改(比如加个 "\n"),那是不是这样就不能用text协议了?
我该从哪里下手呢?
1个回答
年代过于久远,无法发表回答
没有开始结束标记就没办法解决粘包问题,除了更改协议,其它几乎无解
那另外2种协议需要分别定制吗?
最好是分两个端口,每个端口一种协议,这样代码互相不影响。如果你能根据数据区分出是哪种协议,也是可以一个端口的,都写成一个协议文件解析。
好的。谢谢walkor大大
@1:那像我这种设备数据无法修改的情况下,是不是也没办法使用 frame 协议(总包长+包体)?
没办法