TCP协议无边界的问题
使用TCP协议编写应用程序时,需要考虑一个问题:TCP协议是无消息边界的,即不能保证来自单个Send方法的数据能被单个Receive方法读取。
eg:
第一次发送:abcdefg 第二次发送:123456 接收方接收数据时,可能会出现以下情况:
第一次接收:abcdefg123456 也可能出现:第一次接收:abc 第二次接收:efg12 第三次接收:3456
因此要解决TCP发送消息与接收消息一致性,编程时必须要解决消息边界问题。
解决办法:
1、发送固定长度的消息。这种方适用于信息长度固定的场合。
2、将消息长度与消息一起发送。这种方法增加了数据传送信息量,也增加了编程工作量。
eg:每次发送的字符串信息前面用2个字节表明本次信息的长度,接收方先从这两个字节得到信息长度。然后根据长度值循环接收发送方发送的字符串
3、使用特殊标记分隔消息。这种方法适合信息本身不包含特殊标记的场合。如每发送一行信息,就可以用回车换行作为分隔符
TCP协议无边界的问题相关推荐
- 【转】TCP协议的无消息边界问题
http://www.cnblogs.com/eping/archive/2009/12/12/1622579.html 使用TCP协议编写应用程序时,需要考虑一个问题:TCP协议是无消息边界的,即不 ...
- TCP协议的粘包问题(数据无边界性)及解决方法
其他相关文章:http://c.biancheng.net/view/2350.html https://blog.csdn.net/seamanj/article/details/40063093 ...
- TCP协议的粘包问题(数据的无边界性)
上节我们讲到了socket缓冲区和数据的传递过程,可以看到数据的接收和发送是无关的,read()/recv() 函数不管数据发送了多少次,都会尽可能多的接收数据.也就是说,read()/recv() ...
- TCP数据包无边界性问题与解决方案实现
一.引子 从数据从socket缓冲区和数据的过程可知,数据的接收和发送是无关的,recv()/read()函数不管数据发送了多少次都会尽可能的接收更多的数据, 也就是说recv()/read(),se ...
- tcp协议头窗口,滑动窗口,流控制,拥塞控制关系
tcp协议头窗口,滑动窗口,流控制,拥塞控制关系 参考文章 TCP 的那些事儿(下) http://coolshell.cn/articles/11609.html tcp/ip详解--拥塞控制 &a ...
- 计算机网络 | 传输层 :UDP与TCP协议详解
传输层 UDP UDP的协议格式 UDP的特点 基于UDP的应用层知名协议 UDP如何实现可靠传输 TCP TCP的协议格式 TCP的特点 连接管理机制 三次握手 四次挥手 保活机制 问题补充 可靠传 ...
- 深度思考|TCP协议存在那些缺陷?
作者:dog250 https://www.zhihu.com/question/47560918/answer/2302296292 TCP如何优化吞吐率,我很直接说优化不了,这让我甩开了很多令人尴 ...
- 异常处理、socke基于TCP协议编程
一.异常处理 1.错误和异常 1.程序中难免出现错误,而错误分成两种 (1)语法错误(这种错误过不了Python解释器的语法检测,必须在程序执行前改正) #语法错误示范一 if#语法错误示范二 def ...
- TCP协议——粘包与拆包
TCP的基础 TCP协议基础,传送门 TCP协议流量控制,传送门 1.1 什么是TCP粘包/拆包 TCP是个"流"协议,所谓流,就是没有界限的一串数据.大家可以想想河里的流水,是连 ...
最新文章
- mysql 编译安装
- ML之回归预测:利用13种机器学习算法对Boston(波士顿房价)数据集【13+1,506】进行回归预测(房价预测)来比较各模型性能
- RabbitMQ之Exchange分类
- IDA Pro 搜索中文字符串
- 开源与自由 | 商业自由:从边缘到核心贡献
- 正则表达式的命名分组
- 父亲的忠告:把孩子培养成普通人
- 2019年,我们需要加强关注网络安全的6大原因
- ftp关闭mysql约束校验_使用mysql验证配置ftp服务器
- CV+Deep Learning——网络架构Pytorch复现系列——classification(一:LeNet5,VGG,AlexNet,ResNet)
- ArcGIS应用(十六)Arcgis 点对连线制作航空线路图
- 在ipad上的几款远程桌面工具使用体会
- opencv实现人脸识别和眼部识别
- C++实现七参数转换法(布尔莎模型)
- 工程训练(第一章 关于劳动 )-江苏海洋大学-mooc 答案
- Winows通过非445端口远程访问公网Samba
- Burp Scanner Report
- 离子引擎驱动的无声飞机原型成功试飞;华为测试谷歌 Fuchsia OS
- 14五规划里面的句子
- 曾经一个程序员把BUG变成了彩蛋,这个程序员却把彩蛋变成了BUG