workerman 如何正确处理客户端tcp发送过来的数据 5C

php

例:
0xF0,0xF0,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x00,0x03,0x21,0x2A,0xA0,0xA0

以上是由客户端发送到服务端的一条完整指令,由0xF0,0xF0开头,0xA0,0xA0结尾。

但是由于网络或其他原因,客户端发送的数据可能会出现分批发送,


如:第一次发送:

0xF0,0xF0,0x01,0x02,0x03,0x04

第二次再发送:

0x05,0x06,0x07,0x08,0x00,0x03,0x21,0x2A,0xA0,0xA0,0xF0,0xF0,0x01,0x02

请问再这种情况下如何正确的接收处理,拿到每一条完整的指令。。

2个回答

你的这种问题就是典型的分包和粘包问题了,需要加协议头(固定长度的消息头, 并且消息头中要包含包体的长度)
可以参考下php swoole扩展的分包粘包处理方式https://wiki.swoole.com/wiki/page/224.html

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问