发布网友 发布时间:2022-05-06 03:24
共1个回答
热心网友 时间:2022-04-22 11:40
客户发了两次一次发送a一次发送b那么服务器可能一次就收到ab.这就是粘包第2个回答想,对于数据流,根本不用区分边界,另一种就是要区分每一个包的情况。自定议包头格式,包头中包含长度,根据长度字段切割或拼接单独的数据包。搜搜吧。代码堆一堆的。第3个回答IOCP的粘包,其实可以分成两个问题来看,其一是TCP的粘包问题,即流的概念,其二是多个线程对有序的数据分片由于同步执行完成的先后顺序与数据分片顺序不一致所导致的问题。对于TCP的粘包是比较好理解的,仅仅只是两段独立数据流之间的分割点问题,解决的办法通常采用增加固定分割标记、带报文长度指示的简单报文头以及定长等方式来解决。而多线程所导致的粘包(实际上这个不能叫做是粘包,而应当是数据分片的错位),通常不大好处理,个人建议的办法就是针对一个有效连接只发起一个接收请求,如此就可以保障顺序。