如何处理设备发送过来的流数据,tcp协议的


QQ截图20190919141413.jpg

通讯协议如上,现在测试的情况是,设备1kb发送数据没有啥问题,但是2kb的时候,会出现数据少的情况,但不是丢包情况,是包中的丢了一段数据的情况,不知道改如何处理
已邀请:

latin - 挨踢男

赞同来自:

你这个问题应该是传说中的数据被分段传输了。
 tcp数据传输没有边界,数据可能会被分成多个包传输(当数据大于某个值好像是1.4k就会被分段传输,印象中是这个值),也可能多个包连在一起传输(传输的数据不够1.4k,刚好还有下一个tcp数据传输,会带上下一个包的部分数据)。
 
比如你传输的是 2k的数据,tcp底层会分成2个包传输,所以你在onMessage里看到的数据是部分数据,可能只有头没尾,也可能是只有尾没有头。但是如果你把每次onMessage里的数据追加在文件里,你会发现文件里的数据是完整的。
 
按照官方的说法,你要搞个通讯协议来分包。
http://doc.workerman.net/protocols/why-protocols.html

要回复问题请先登录注册