Skip to content

Latest commit

 

History

History

18

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

什么是粘包问题,如何解决?

默认情况下,TCP 连接会采用延迟传送算法(Nagle 算法),在数据发送之前缓存他们。如果短时间有多个数据发送,会缓冲到一起作一次发送(缓冲大小是 socket.bufferSize),这样可以减少 IO 消耗提高性能。(TCP 会出现这个问题,HTTP 协议解决了这个问题)

解决方法

  1. 多次发送之前间隔一个等待时间:处理简单,但是影响传输效率;
  2. 关闭 Nagle 算法:消耗资源高,整体性能下降;
  3. 封包/拆包:使用一些有标识来进行封包拆包(类似 HTTP 协议头尾);