TCP数据传输过程中数据粘包的产生与处理

TCP数据传输过程中数据粘包的产生:
TCP网络传输的应用程序有时会出现粘包现象,因为tcp传输没有消息边界,发送方发送若干次数据的时候,数据粘连在一起,接收方一次性将发送方多次发送的数据一起接收,产生接收数据的粘连。(即发送方发送的若干包数据到接收方接收时粘成一包)
如果是发送需要连续发送的内容,比如文本文件、音视频文件、压缩包等大文件,则粘包对结果没有影响;但是如果每次发送的内容是相互独立的话,则粘包对结果有影响,比如发消息 : “jiajia”, “hello”,这是两个信息,分别执行不同的功能,但是产生粘包后,就变成:"jiajiahello"一个信息,那么对应两个功能都不能实现,因此需要处理粘包。

TCP数据传输过程中数据粘包的处理:
①自定义TCP发送接收消息的协议,消息发送前进行字符串的拼接,接收时则执行字符串拆分,
例如:
想要发送的内容为 jiajiage
发送前先进行字符串拼接,拼接成Ajiajiage
接收时再执行字符串拆分,判断字符串首字符是否为A,如果是A那么就从A后面进行分割,A/jiajiage,后面的就是消息内容。

②发送数据前把数据的字节长度(文件大小)先发送给接收方,再发送消息,接收方则根据发送端发送过来的字节长度(length)来接收消息,当接收到的消息的字节数等于length时,才/就停止接收。

更详细说法请看:https://www.cnblogs.com/wuchanming/p/4387160.html

猜你喜欢

转载自blog.csdn.net/weixin_43793181/article/details/109153975