客户端发送数据如下:
服务端接收数据如下:
请问服务端应该如何组装数据,或者说怎么处理成一条
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
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