0
IOCP的粘包是怎么个情况



akirya
引用
客户发了两次一次发送a一次发送b
那么服务器可能一次就收到ab.这就是粘包


leon7909

引用
粘包和你用什么模型关系不大,是协议层(TCP)的问题,CSDN上关于粘包处理的代码已经有过很多了,无非就是两种,一种就是贯彻TCP“流”协议的思想,对于数据流,根本不用区分边界,另一种就是要区分每一个包的情况。自定议包头格式,包头中包含长度,根据长度字段切割或拼接单独的数据包。搜搜吧。代码堆一堆的。


unsigned

引用
IOCP的粘包,其实可以分成两个问题来看,其一是TCP的粘包问题,即流的概念,其二是多个线程对有序的数据分片由于同步执行完成的先后顺序与数据分片顺序不一致所导致的问题。对于TCP的粘包是比较好理解的,仅仅只是两段独立数据流之间的分割点问题,解决的办法通常采用增加固定分割标记、带报文长度指示的简单报文头以及定长等方式来解决。而多线程所导致的“粘包”(实际上这个不能叫做是粘包,而应当是数据分片的错位),通常不大好处理,个人建议的办法就是针对一个有效连接只发起一个接收请求,如此就可以保障顺序。


cdmar79

引用
setsocketoption/TCP_NODELAY
Tags: , | 引用(0)
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]