DIOCP3-粘包处理

简介: 什么是粘包:    第一次发送  12345, 第二次发送abcde, 底层socket可能会一次性进行发送12345abcde,或者对方可能一次性进行了接收,那接收的时候,你可能想分两次接收才对,第一次接受到12345, 第二次想接收abcde,但是事与愿违,一次就接收完了,这就是粘包的问题。

什么是粘包:

   第一次发送  12345, 第二次发送abcde, 底层socket可能会一次性进行发送12345abcde,或者对方可能一次性进行了接收,那接收的时候,你可能想分两次接收才对,第一次接受到12345, 第二次想接收abcde,但是事与愿违,一次就接收完了,这就是粘包的问题。需要自己处理,

 

怎么样处理粘包:

  常见的方法是在包数据的前面加长度比如我先发送一个字节代表长度5 然后再发数据包12345, 这样接收的时候,先读数据包长度,然后再获取包的数据,这样就可以处理粘包问题了。

 

diocp3的StreamCoder,可以让你直接发送TStream对象,不需要处理粘包的问题。接收到的数据对象就是一个TStream对象

目录
相关文章
|
8月前
|
缓存 移动开发 网络协议
tcp业务层粘包和半包理解及处理
tcp业务层粘包和半包理解及处理
125 1
|
6月前
|
Web App开发 监控 网络协议
|
网络协议 算法
|
8月前
|
XML 缓存 网络协议
面试题:TCP的粘包和拆包
面试题:TCP的粘包和拆包
68 1
|
缓存 网络协议 算法
TCP粘包、拆包原因与解决方案
TCP粘包、拆包原因与解决方案
285 0
|
缓存 移动开发 网络协议
Netty 中的粘包和拆包详解
Netty 中的粘包和拆包详解
4358 1
|
移动开发
粘包和半包的解决(二)
粘包和半包的解决(二)
|
网络协议 算法
第 9 章 TCP 粘包和拆包及解决方案
第 9 章 TCP 粘包和拆包及解决方案
247 0
Netty(三)之数据之粘包拆包
Netty(三)之数据之粘包拆包
85 0
Netty(三)之数据之粘包拆包