 |
|
onlyyes2015
V2EX member #142382, joined on 2015-10-13 16:46:28 +08:00
|
onlyyes2015's recent replies
面向字节流的 IO 都有这个问题。 socket 中 tcp 协议是面向流的协议,发送方发送和接收方的接收并不是一一对应的。所以造成所谓的粘包现象。
怎么处理呢?
方法 1 :协议包定长。
每个发送出去的包长度固定。比如都是 10 个字节。收的时候每次就收 10 个字节,当一个完整的数据包。
方法 2 :告知包的长度
协议头开始固定长度的字节告知后续包长。收方先收包长字节,知道了后续包长后再收。
方法 3 :用一个包体中绝不会出现的结束标志标识包结束。