tcp

TCP客户端发送数据很大,服务端接收时被拆分成多条,应该如何处理成一条?

0

客户端发送数据如下:
截图


服务端接收数据如下:
截图


请问服务端应该如何组装数据,或者说怎么处理成一条

已邀请:

walkor

赞同来自:

TCP有两个特点:
1、基于流式传输(分片传输)
2、数据数据流没有边界


根据特点1,数据大于某个值(1.4k左右)就会被分片,所以基于TCP传输时你收到数据的时候就是一段一段的。
根据特点2,由于没有边界,没有办法知道收到当前这一段数据是否是最后一段,只能通知业务自行判断。所以业务与服务端要定一个通讯协议,一般是把整个包的大小写到某个位置,例如http协议里post请求的数据大小一般放到http头里的content-length字段里。


正是由于以上两特点,所以才在TCP基础上产生了那么多的通讯协议,例如http、smtp、websocket、ftp、mqtt等等。通讯协议的作用就是从分段传输的数据中计算出请求长度,并把数据流里的完整请求组装拆分出来。


所以你要做的就是采用某种通讯协议来传输你的数据。
参考手册
http://doc.workerman.net/protocols/why-protocols.html
http://doc.workerman.net/protocols/how-protocols.html
http://doc.workerman.net/protocols/example.html

要回复问题请先登录注册