【转】TCP协议的无消息边界问题
http://www.cnblogs.com/eping/archive/2009/12/12/1622579.html
使用TCP协议编写应用程序时,需要考虑一个问题:TCP协议是无消息边界的,即不能保证来自单个Send方法的数据能被单个Receive方法读取。
eg:
第一次发送:abcdefg 第二次发送:123456 接收方接收数据时,可能会出现以下情况:
第一次接收:abcdefg123456 也可能出现:第一次接收:abc 第二次接收:efg12 第三次接收:3456
因此要解决TCP发送消息与接收消息一致性,编程时必须要解决消息边界问题。
解决办法:1、发送固定长度的消息。这种方适用于信息长度固定的场合。
2、将消息长度与消息一起发送。这种方法增加了数据传送信息量,也增加了编程工作量。
eg:每次发送的字符串信息前面用2个字节表明本次信息的长度,接收方先从这两个字节得到信息长度。然后根据长度值循环接收发送方发送的字符串
3、使用特殊标记分隔消息。这种方法适合信息本身不包含特殊标记的场合。如每发送一行信息,就可以用回车换行作为分隔符。
【转】TCP协议的无消息边界问题相关推荐
- TCP协议无边界的问题
使用TCP协议编写应用程序时,需要考虑一个问题:TCP协议是无消息边界的,即不能保证来自单个Send方法的数据能被单个Receive方法读取. eg: 第一次发送:abcdefg 第二次发送:12 ...
- C语言实现网络聊天程序的设计与实现(基于TCP协议)
目录 TCP/IP协议介绍 TCP/IP协议与WinSock网络编程接口的关系 WinSock编程简单流程 VC中socket编程 ...
- 计算机网络整理:UDP协议和TCP协议
系列文章目录 HTTP协议和HTTPS协议 文章目录 系列文章目录 一.TCP/IP 各层协议 二.UDP协议和TCP协议 1.TCP和UDP的区别 2.UDP 协议 3.TCP 协议 1)特点 2) ...
- TCP协议的粘包问题
TCP粘包 首先TCP作为面向字节流的传输方式,创建一个tcp的socket,同时在内核中创建一个发送缓冲区和一个接受缓冲区. 当调用write时,向会将数据写入到发送缓冲区中 如果发送的字节数太长, ...
- TCP协议的粘包问题(数据无边界性)及解决方法
其他相关文章:http://c.biancheng.net/view/2350.html https://blog.csdn.net/seamanj/article/details/40063093 ...
- C#通过TCP实现 HL7医疗系统传输的协议,并使用MLLP协议接收HL7消息并解析
本文讲解的是利用C# 对接医院HIS系统,接收HL7协议数据,并解析数据 之前和医院系统对接一直是使用数据库中间表,或者webservices等接口方式,上次遇到别人HIS提供了一份HL7的接口文档: ...
- C#通过TCP实现 HL7医疗系统传输的协议,并使用MLLP协议发送HL7消息
本文章讲解C#-MLLP协议一头两尾的封装,HL7Spy工具的使用 小的公司是做健康管理软件的,之前对接的都是体检中心,从没有和His对接过接口.这次客户居然给我们抛了一个大难题- HL7医疗系统传输 ...
- 深度思考|TCP协议存在那些缺陷?
作者:dog250 https://www.zhihu.com/question/47560918/answer/2302296292 TCP如何优化吞吐率,我很直接说优化不了,这让我甩开了很多令人尴 ...
- 异常处理、socke基于TCP协议编程
一.异常处理 1.错误和异常 1.程序中难免出现错误,而错误分成两种 (1)语法错误(这种错误过不了Python解释器的语法检测,必须在程序执行前改正) #语法错误示范一 if#语法错误示范二 def ...
最新文章
- Centos7上yum安装mongodb4-2
- 默认析构函数与空析构函数并不完全等价
- spring security加载原理(基于springboot)
- DCMTK:查询/检索服务类用户(C-MOVE操作)
- 手机两列布局,正方形
- mac 连接hbase的图形化界面_MAC安装Hbase以及Hbase基本命令
- Node Express4.x 片段视图 partials
- 全球首款乘云而来的存储产品CDS诞生!
- 震惊!程序员要放弃 Python 了!?发生了啥?
- iOS开发之网络编程--6、NSURLSessionConfiguration笔记
- BZOJ1305 [CQOI2009]dance跳舞 【网络流】
- c语言 一个矩阵的乘积,c语言矩阵相乘
- 阶段3 1.Mybatis_12.Mybatis注解开发_6 mybatis注解开发一对一的查询配置
- cad有没有网页版_电脑中好用的免费CAD查看软件 满满的干货
- 破解使用radius实现802.1x认证的企业无线网络
- SVCHOST启动服务实战
- 论文阅读-LEARNED STEP SIZE QUANTIZATION
- 5个帮你改掉坏习惯的方法
- R语言神经网络量化交易模型
- 韩国社交软件Kakao Talk要开网络银行,社交软件+银行的模式会怎么转?