使用TCP协议编写应用程序时,需要考虑一个问题:TCP协议是无消息边界的,即不能保证来自单个Send方法的数据能被单个Receive方法读取。

eg:

第一次发送:abcdefg   第二次发送:123456         接收方接收数据时,可能会出现以下情况:

第一次接收:abcdefg123456   也可能出现:第一次接收:abc 第二次接收:efg12 第三次接收:3456

因此要解决TCP发送消息与接收消息一致性,编程时必须要解决消息边界问题。

解决办法:

1、发送固定长度的消息。这种方适用于信息长度固定的场合。

2、将消息长度与消息一起发送。这种方法增加了数据传送信息量,也增加了编程工作量。

eg:每次发送的字符串信息前面用2个字节表明本次信息的长度,接收方先从这两个字节得到信息长度。然后根据长度值循环接收发送方发送的字符串

3、使用特殊标记分隔消息。这种方法适合信息本身不包含特殊标记的场合。如每发送一行信息,就可以用回车换行作为分隔符

TCP协议无边界的问题相关推荐

  1. 【转】TCP协议的无消息边界问题

    http://www.cnblogs.com/eping/archive/2009/12/12/1622579.html 使用TCP协议编写应用程序时,需要考虑一个问题:TCP协议是无消息边界的,即不 ...

  2. TCP协议的粘包问题(数据无边界性)及解决方法

    其他相关文章:http://c.biancheng.net/view/2350.html https://blog.csdn.net/seamanj/article/details/40063093 ...

  3. TCP协议的粘包问题(数据的无边界性)

    上节我们讲到了socket缓冲区和数据的传递过程,可以看到数据的接收和发送是无关的,read()/recv() 函数不管数据发送了多少次,都会尽可能多的接收数据.也就是说,read()/recv() ...

  4. TCP数据包无边界性问题与解决方案实现

    一.引子 从数据从socket缓冲区和数据的过程可知,数据的接收和发送是无关的,recv()/read()函数不管数据发送了多少次都会尽可能的接收更多的数据, 也就是说recv()/read(),se ...

  5. tcp协议头窗口,滑动窗口,流控制,拥塞控制关系

    tcp协议头窗口,滑动窗口,流控制,拥塞控制关系 参考文章 TCP 的那些事儿(下) http://coolshell.cn/articles/11609.html tcp/ip详解--拥塞控制 &a ...

  6. 计算机网络 | 传输层 :UDP与TCP协议详解

    传输层 UDP UDP的协议格式 UDP的特点 基于UDP的应用层知名协议 UDP如何实现可靠传输 TCP TCP的协议格式 TCP的特点 连接管理机制 三次握手 四次挥手 保活机制 问题补充 可靠传 ...

  7. 深度思考|TCP协议存在那些缺陷?

    作者:dog250 https://www.zhihu.com/question/47560918/answer/2302296292 TCP如何优化吞吐率,我很直接说优化不了,这让我甩开了很多令人尴 ...

  8. 异常处理、socke基于TCP协议编程

    一.异常处理 1.错误和异常 1.程序中难免出现错误,而错误分成两种 (1)语法错误(这种错误过不了Python解释器的语法检测,必须在程序执行前改正) #语法错误示范一 if#语法错误示范二 def ...

  9. TCP协议——粘包与拆包

    TCP的基础 TCP协议基础,传送门 TCP协议流量控制,传送门 1.1 什么是TCP粘包/拆包 TCP是个"流"协议,所谓流,就是没有界限的一串数据.大家可以想想河里的流水,是连 ...

最新文章

  1. mysql 编译安装
  2. ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)来比较各模型性能
  3. RabbitMQ之Exchange分类
  4. IDA Pro 搜索中文字符串
  5. 开源与自由 | 商业自由:从边缘到核心贡献
  6. 正则表达式的命名分组
  7. 父亲的忠告:把孩子培养成普通人
  8. 2019年,我们需要加强关注网络安全的6大原因
  9. ftp关闭mysql约束校验_使用mysql验证配置ftp服务器
  10. CV+Deep Learning——网络架构Pytorch复现系列——classification(一:LeNet5,VGG,AlexNet,ResNet)
  11. ArcGIS应用(十六)Arcgis 点对连线制作航空线路图
  12. 在ipad上的几款远程桌面工具使用体会
  13. opencv实现人脸识别和眼部识别
  14. C++实现七参数转换法(布尔莎模型)
  15. 工程训练(第一章 关于劳动 )-江苏海洋大学-mooc 答案
  16. Winows通过非445端口远程访问公网Samba
  17. Burp Scanner Report
  18. 离子引擎驱动的无声飞机原型成功试飞;华为测试谷歌 Fuchsia OS
  19. 14五规划里面的句子
  20. 曾经一个程序员把BUG变成了彩蛋,这个程序员却把彩蛋变成了BUG

热门文章

  1. HALCON:Variation Model用法解析
  2. VC编程操作Word2010生成表格
  3. 拔染印花的主要特点和工艺技术
  4. IMI 基于 Swoole 开发的协程 PHP 开发框架 常驻内存、协程异步非阻塞
  5. AngularJS 动态模板
  6. liferay 6.2 主题开发
  7. ExtJS 组件添加子组件
  8. 解决Agent admitted failure to sign using the kye with ssh
  9. Chrome 可移动绿色版
  10. OpenCV-巴特沃斯低通高通滤波器(C++)