百科问答小站 logo
百科问答小站 font logo



怎么解决TCP网络传输「粘包」问题? 第1页

  

user avatar   rocwon 网友的相关建议: 
      

TCP都没有包这个概念,何来粘包一说?


user avatar   exiledkingcc 网友的相关建议: 
      

这个所谓“TCP黏包”问题,我老早就在知乎上看过,很多人都批判过。本来不想搭理的,但是看到居然有些人在这里杠:“实践中遇到过就懂了黏包的存在”。这真是又好气又好笑。

你们自己先入为主地错误地认为send与recv是一一对应的,从而生造出“TCP黏包”这种东西,还有理了吗?

但凡认真看了send、recv的函数签名,就知道有返回值啊!你不该想一想send调用100字节,如果返回值比100小的时候该怎么办吗?不该想一想recv缓存区有100字节,如果返回值比100小怎么办吗?但凡动动脑子,想一下这两个问题,也不会想到什么“黏包”吧!


有人可能觉得,不管叫黏包问题也好,叫基于TCP设计以包为单位的应用层协议也好,叫什么不重要,重要的是怎么解决这个问题。

我是反对的。

基于错误的理解形成的概念,对于有效的交流沟通是有害的,会导致无法理清问题的实质与边界、难以提出正确且合适的解决方案。


user avatar   Ivony 网友的相关建议: 
      

一个流式传输协议,非要自己发明个包的概念,还假装流式传输协议按照包来发送数据,结果整出个粘包问题……


这种问题本质上和怎样解决馒头没馅的问题一样。

要么买包子,要么自己塞馅进去……




  

相关话题

  中央处理器(CPU)有没有假货? 
  Linux Kernel 4.9 中的 BBR 算法与之前的 TCP 拥塞控制相比有什么优势? 
  怎么解决TCP网络传输「粘包」问题? 
  怎么看待 公办学院使用的部分c语言书籍存在 描述 main不可被其他函数调用但是实际操作 可以? 
  想安装 Linux,有什么版本可以推荐? 
  C 与 C++ 的真正区别在哪里? 
  完成了c语言程序设计初步学习,大概了解了数据类型,循环,判断,数组,函数和指针。接下来该学什么(书)? 
  如何评价Linux发布新的CoC (Code of Conduct) 后引发的部分开源社区的不满? 
  linux 的文件管理机制是否比 Windows 更优秀? 
  Android 基于 Linux,为什么可以收费? 

前一个讨论
牛顿晚年由科学走向神学,是升华了还是迷失了?
下一个讨论
带夜带月的,你能想起多少诗词?





© 2025-06-01 - tinynew.org. All Rights Reserved.
© 2025-06-01 - tinynew.org. 保留所有权利