收包率低/丢包率高的原因分析

  • (1) 缓存太小,不能及时接收数据。

    连续多个UDP包超过了UDP接收缓冲区大小 ,比如:

    1. 如:UDP包过大
    2. 如:UDP发包速率过快,突发大数据流量超过了缓冲区上限
  • (2)recvfrom()接收到数据之后处理速度太慢

    如果数据接收和处理是连续进行的,那么可能由于数据处理过慢,两次recvfrom调用的时间间隔里发过来的包丢失

对应的解决方法

  • UDP包过大

    解决方法:增加系统发送或接收缓冲区大小

    int nBuf=32*1024;//设置为32K
    setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nBuf,sizeof(int));
    setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nBuf,sizeof(int));
    
  • 发包速率过快

    解决方法:增加应答机制,处理完一个包后,在继续发包

  • recvfrom()接收到数据之后处理速度太慢

    服务器程序启动之出,开辟两个线程,一个线程专门用于接收数据包,并存放在应用层的缓存区;另外一个线程用于专门处理和响应数据包请求,避免因为处理数据造成数据丢包。其本质上还是增大了缓冲区大小,只是将系统缓冲区转移到了自己的缓冲区。

  • 最复杂的方式

    在应用层实现丢包重发机制超时机制,确保数据包不丢失。

版权声明:本文为CSDN博主「shuaixio」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baidu_35692628/article/details/76165337

UDP解决丢包问题总结相关推荐

  1. 服务器传递文件丢包怎么回事,TCP传输协议中如何解决丢包问题

    一.回答这个问题之前,要考虑TCP协议为什么会丢包,在什么样的情况下会丢包. 1. TCP协议定义(Transimission Control Protocol)是以一种面向连接的.可靠的.基于字节流 ...

  2. linux tcp 丢包命令_在Linux下实现测试TCP和UDP的丢包检测!

    在Linux下实现测试TCP和UDP的丢包检测! 疯狂の猿猴 • 2020 年 12 月 11 日 前言 本人平时基本上都是win,一下子转战到linux,有点不习惯! 因此做个记录,便于以后自己查阅 ...

  3. Udp数据丢包测试--iperf3

    1.背景 近期需要用UDP来传输大量数据,为了避免出现大量丢包,所以需要对UDP数据丢包进行测试.推动开发减少丢包率. 2.环境 目前demo测试使用的环境是windows环境(后期如有要求可以改为l ...

  4. UDP主要丢包原因及具体问题分析

    转载:https://www.cnblogs.com/Zhaols/p/6105926.html 一.主要丢包原因 1.接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时 ...

  5. 测试服务器UDP/TCP丢包率

    1. 测试UDP丢包率 30个现成以5Mbps速度测试60s iperf -u -c 目的IP -b 5M -P 30 -t 60 2. 测试TCP丢包率 iperf -c 目的IP -b 5M -P ...

  6. 【ethtool】ethtool 网卡诊断、调整工具、网卡性能优化| 解决丢包严重

    目录 即看即用 详细信息 软件简介 安装 ethtool的使用 输出详解 其他指令 将 ethtool 设置永久保存 如何使用 ethtool 优化 Linux 虚拟机网卡性能 ethtool 解决网 ...

  7. FTP传输大文件丢包损坏严重,怎么解决?

    通过FTP方式把公司总部的大体量文件传输到国内多地,甚至发往国外,经常遇到长距离网络不可避免的时延丢包及跨运营商的情况. 如何解决这个问题? 其实不仅是大文件,网络上传输的各种内容,大多数都需要解决丢 ...

  8. 网络丢包问题的原因及解决办法

    数据在INTERNET上是以数据包为单位传输的,每包nK,不多也不少.这就是说,不管网络线路有多好.网络设备有多强悍,你的数据都不会是以线性(就象打电话一样)传输的,中间总是有空洞的.数据包的传输,不 ...

  9. UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?

    关注.星标公众号,直达精彩内容 素材来源:https://blog.csdn.net/LearnLHC/article/details/115268028 整理:技术让梦想更伟大 | 李肖遥 一.UD ...

最新文章

  1. sublime Text 开发工具
  2. UI基础 - UIScrollView
  3. 中国有多少python程序员-“刚毕业1年,做Python能挣多少?”网友:吹的不多……...
  4. 提高跑步速度的3个方法
  5. Spring下@ResponseBody响应中文内容乱码问题
  6. Google邮局可以实时开通了
  7. springboot-custom starter
  8. SAP云平台API portal里的discover all功能
  9. QT 调用 DLL 的三种方法
  10. STL中bitset的用法的整理
  11. 解决 : Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
  12. 1核2G云服务器 标准型S4 S5,腾讯云服务器标准型S4和S5配置性能参数区别及选择攻略...
  13. 修改数据库端口为51433
  14. java的scanner使用步骤
  15. dgl._ffi.base.DGLError: Cannot assign node feature “n_feat“ on device cuda:0 to a graph on device
  16. android实现1000次点击,android – AdMob收入和替代方案:展示次数和点击次数[已关闭]...
  17. MT4API外汇跟单软件使用分享
  18. aloha协议c语言实现,任务ALOHA协议的OPNET仿真.doc
  19. Android保活方法
  20. 适合编程初学者的开源项目:小游戏2048(微信小程序版)

热门文章

  1. 【渗透】Redis 未授权访问漏洞利用(三种利用方式)
  2. 【论文阅读】Impact of Texture Information on Crop Classificationwith Machine Learning and UAV Images
  3. Linux 入门常用命令(ZT)
  4. ASP ActiveX DLL
  5. html遍历json数组,JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
  6. 【笔记】行测——常识判断之科技常识总结与归纳(一)
  7. HTTP协议,HTTPS协议,SSL/TLS协议概述
  8. 有限增量公式、泰勒公式、泰勒级数、傅里叶级数的关系
  9. grub命令 u盘安装linux,u盘安装ubuntu出现grub问题怎么办?
  10. lock与latch区别