前言

我在做tcp通信项目,负责客户端,想要实现文件传输等功能,遇到了以下问题:1,数据黏包问题;2,数据丢失问题;

一,tcp数据黏包问题:

数据黏包是指tcp会对要传输的数据进行切割,然后再进行传输。比如,客户端发送两条json消息:{“type”:1,“pcmName”:test.raw,“isEnd”:1}和{“type”:4,“pcmName”:test2.raw,“isEnd”:0},但是服务器可能先收到{“type”:1,“pcmName”:test.raw, 再收到"isEnd":1{“type”:4,“pcmName”:test2.raw,“isEnd”:0}。

解决办法:1.添加数据头来说明本次发送消息的长度,如39{“type”:1,“pcmName”:test.raw,“isEnd”:1} ;2.接收端设置接收buffer,进行黏包处理,处理程序我会稍后贴出来;

一,tcp数据丢失问题:

现象:tcp通信过程,客户端发送了一条消息,但是windows端的服务器却没有收到。

原因:同事通过网络抓包确定windows主机收到了这条消息,但是windows提前向客户端发送了响应的ack信号并清空了相应的缓冲区(客户端收到此信号后就认为服务器接收成功,便不会再次发送本次数据),这导致应用层没有来得及处理。

解决办法:暂时没有找到解决办法,欢迎有好的建议的大牛们留言指导!

tcp通信数据黏包和数据丢失问题相关推荐

  1. 网络通信中TCP出现的黏包以及解决方法 socket 模拟黏包

    粘包问题概述 1.1  描述背景 采用TCP协议进行网络数据传送的软件设计中,普遍存在粘包问题.这主要是由于现代操作系统的网络传输机制所产生的.我们知道,网络通信采用的套接字(socket)技术,其实 ...

  2. Python攻城师的成长————网络编程(socket套接字、通信循环、链接循环、黏包问题)

    今日学习目标 学习什么是socket套接字,并依靠它去处理TCP协议等网络编程问题 文章目录 今日学习目标 学习内容 一. socket套接字 1.什么是socket 2.套接字发展史及分类 3.套接 ...

  3. 04、Netty学习笔记—(黏包半包及协议设计解析)

    文章目录 一.粘包与半包 1.1.现象分析 1.1.1.粘包.半包情况分析 1.1.2.滑动窗口.MSS限制.Nagle算法介绍 1.2.粘包.半包现象复现 1.2.1.粘包复现 1.2.2.半包复现 ...

  4. Python笔记 UDP 黏包

    前言: 上节课逃课了做的简单笔记复习见:  http://t.csdn.cn/5zbB6  这节课打算逃课,被我们的可爱的琪琪拦下了 目录   (目录没搞好将就一下下啦) UDP 小案例  : CMD ...

  5. Python学习日记(三十一) 黏包问题

    import subprocessres = subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PI ...

  6. netty——黏包半包的解决方案、滑动窗口的概念

    黏包半包 滑动窗口 在深入理解黏包半包问题之前,先了解TCP的一个知识点--滑动窗口 我们都指定tcp是一种可靠的传输协议,这主要是因为在tcp中客户端给服务器端发送一条消息,要等待服务器端的应答,如 ...

  7. python中黏包问题的解决

    python中黏包问题的解决 1.在前面我们知道tcp容易产生黏包的问题,而udp不会产生黏包的问题,但是会产生丢包的问题,tcp应用的场景很多所以黏包问题必须要解决. 1.解决黏包问题第一种方法,我 ...

  8. python 心电处理包_python 黏包现象及其解决方案

    一.数据缓冲区 缓冲区(buffer),它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的 ...

  9. TCP与UDP协议、socket套接字编程、通信相关操作(cs架构软件)、TCP黏包问题及解决思路

    OSI七层协议 传输层 1.PORT协议:前面讲过 2.TCP协议与UDP协议:规定了数据传输所遵循的规则(数据传输能够遵循的协议有很多,TCP和UDP是较为常见的两个) TCP协议 基于TCP传输数 ...

最新文章

  1. 每一次宕机都是新的开始
  2. kafka 学习总结
  3. ubuntu14.04 LTS 源码编译安装postgreSQL
  4. 大数据---数据分析师的完整流程与知识结构体系
  5. 二十五还是单身的十大原因
  6. 条件变量、pthread_cond_init
  7. 1.1 线性模型基础
  8. 高等数学问题的符号解
  9. Biobank genetic data探析(二)
  10. mac电脑投屏到小米盒子_苹果手机搜不到小米盒子怎么办?
  11. 抽象类是不是必须要有抽象方法
  12. 合成游戏中的数学原理
  13. Fly.js HTTP 请求解决方案
  14. 解析G652,G657A,G655和G654光缆之间的区别
  15. 顺序存储二叉树和线索化二叉树
  16. Linux网络新技术基石:eBPF and XDP
  17. 显卡出问题,花屏,显示蓝条了,分辨率800*600,想办法终于把问题定位了
  18. LaTex的表格、图片、参考文献的基本操作
  19. 强烈建议使用Windows Live Writer发布日志
  20. 联想M7206激光打印机无法打印02

热门文章

  1. 阿里腾讯史上最大规模校招!
  2. CMMI流程规范-图解测试流程
  3. [实战]利用RTMP实现直播系统
  4. ubuntu无法安装增强功能解决方法
  5. Android app图标显示未读消息数
  6. 【Unity3D插件】Build Report Tool插件,Build报告,优化包体,查看资源占用
  7. 手把手教程 | 使用AlphaFold进行蛋白质结构预测,探索生命信息密码
  8. 解决打开VM虚拟机蓝屏问题
  9. 360手机用鸿蒙系统,真正意义上的国产操作系统来了,360宣布率先适配华为鸿蒙系统...
  10. Matlab 2010a设置VS2010为编译器