Select模型优化与多线程应用.pdfVIP

  • 1
  • 0
  • 约2.02千字
  • 约 3页
  • 2026-10-22 发布于北京
  • 举报

第三课:select模型的优化

这一课总共包含两个部分,

第一部分,粘包处理

第二部分,生产者消费者模式

第一部分:粘包处理

首先我们需要明白什么是粘包。

Send函数的本质是将指定缓冲区的内容流到协议栈的发送缓冲区中。至于数据何时通过互

联网从本机发送给另外一台主机,这是操作系统要负责的事情。

操作系统的数据发送方式比较繁琐,但大致可以简单归结为以下两个条件满足一个:

1.协议栈的接收缓冲区数据存在时间超过一定数值

2.协议栈的接收缓冲区字符串长度超过一定数值

所以,当数据发送频率较快,或网络比较复杂,容易出现重发的情况时,就容易出现操作系

统一次发送了多个数据结构,半个数据结构的情况(比如一个login结构体就是一个数据结

构)。

对于数据接收端也是同理,recv函数的本质是将协议栈接收缓冲区中的内容流到指定的缓冲

区中,至于是不是一个完整的数据结构根本不管。于是便很容易出现一次接收了多个数据结

构或半个数据结构的情况。

对于这个问题,因为常常几个数据结构粘连在一起,于是我们给它起了个形象的名字:粘包。

上一节课为什么要设定发送间隔,发送的快了,就可能出现粘包问题。

至于粘包的处理方法,也很简单,就是创建一个第二缓冲区(又名消息缓冲区),第

文档评论(0)

1亿VIP精品文档

相关文档