惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
J
Java Code Geeks
博客园 - 【当耐特】
宝玉的分享
宝玉的分享
腾讯CDC
D
DataBreaches.Net
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
V
V2EX
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
Jina AI
Jina AI
GbyAI
GbyAI
大猫的无限游戏
大猫的无限游戏
A
About on SuperTechFans
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
B
Blog
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium

博客园 - SummerRain

【转】ES、TS、JS的区别 Typescript入门手记 软件著作权申请-注意事项 软件著作权申请书在线打印分页不正常问题的解决 【链接】在线压缩JS文件 用户中心 - 博客园 【转】Notepad++如何设置行高 【转】kettle7.1资源库无法打开,找不到connect按钮的问题处理 【转】C# 高性能 TCP 服务的多种实现方式 【转】Cowboy 开源 WebSocket 网络库 【转】IT大牛博客 【转】ASP.NET WEB API系列教程 云服务器上安装配置Filezilla Server的坑! Windows 2008 利用Filezilla server搭建FTP C#-DataTable分页代码 百度Web富文本编辑器ueditor在ASP.NET MVC3项目中的使用说明 【转】关于TCP和UDP协议消息保护边界的介绍 【转】Log4net用法 【转】微信公众账号 Senparc.Weixin.MP SDK 开发教程 索引
【转】TCP协议的无消息边界问题
SummerRain · 2015-06-22 · via 博客园 - SummerRain

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