应用层缓冲区处理

为什么需要应用层缓冲区

应用层接收缓冲区

在socket网络编程过程中,如果数据被分包了,那么当每次接收数据的时候并没有接收一个完整的数据包,那么这个时候该怎么办,正确的做法应该是在这个时候将数据放在一个输入缓冲区中,直到输入缓冲区中有一个完整的数据包的时候,才从缓冲区中取出这个完整的数据包进行处理,使用这种方法可以很好的处理分包问题。避免长时间阻塞等待接收完整数据包。如果没有应用层缓冲区,那么当 读取不到完整的数据包的时候,将会导致一直阻塞等待剩余的数据到来,所以这是得不偿失的。加入应用层缓冲区后避免了长时间阻塞 等待的问题。

应用层发送缓冲区

如果在发送数据的时候,因为内核发送缓冲区满了,从而导致只发送了部分数据,那么剩下的数据该怎么办。这里我们应该准备一个应用层的发送缓冲区,当数据没有发送完毕的时候将剩下的数据放到缓冲区中,等到内核发送缓冲区不满的时候再次发送应用层的发送缓冲区中的内容。如果没有发送缓冲区,那么就需要不挺的轮询再次发送,很显然这是很浪费并且耗时的。

综上所述,所以非阻塞网络编程中应用层缓冲区是必不可少的。

实现简易的应用层缓冲区