如何最大程度地减少 UDP 数据包丢失

2024-06-22

我每秒接收约 3000 个 UDP 数据包,每个数据包的大小约为 200 字节。我编写了一个 java 应用程序,它侦听这些 UDP 数据包并将数据写入文件。然后服务器以先前指定的速率发送 15000 条消息。写入文件后,它仅包含约 3500 条消息。使用wireshark,我确认我的网络接口收到了所有15000 条消息。之后我尝试更改套接字的缓冲区大小(最初为 8496 字节):

(java.net.MulticastSocket)socket.setReceiveBufferSize(32*1024);

这一更改将保存的消息数量增加到约 8000 条。我不断地将缓冲区大小增加到 1MB。此后,保存的消息数量达到~14400条。将缓冲区大小增加到更大的值不会增加保存的消息数量。我认为我已经达到了允许的最大缓冲区大小。尽管如此,我仍然需要捕获我的网络接口收到的所有 15000 条消息。

任何帮助,将不胜感激。提前致谢。


闻起来像一个错误,很可能在您的代码中。如果 UDP 数据包通过网络传送,它们将在本地排队等待传送,正如您在 Wireshark 中看到的那样。也许您的程序在从套接字读取数据时没有及时取得进展 - 是否有专门的线程来执行此任务?

您也许可以通过检测来取得一些进展which您的程序丢失了数据包。如果所有丢失的数据包都是较早的数据包,则可能在程序等待接收数据之前就已经发送了数据。如果他们都晚了,也许退出得太早了。如果它们是定期的,那么您的代码可能会出现一些问题,导致循环接收数据包。 ETC。

无论如何,您似乎对丢失的数据包异常焦虑。从设计上来说,UDP 并不是一种可靠的传输方式。如果这些多播数据包的丢失是您的系统的一个问题(而不仅仅是您出于性能原因想要解决的一个谜),那么系统设计就是错误的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何最大程度地减少 UDP 数据包丢失 的相关文章

  • 创建 RESTful WebService 并通过 Glassfish 4 提供服务

    我在 JEE6 中看到了很多关于 RESTful WebServices 的问题 所以我想与您分享这个示例解决方案 它展示了实现 RESTful Webservice 是多么容易 首先创建一个新的动态 Web 项目并将 Glassfish
  • Eclipse + Spring Boot 中“抛出 new SilentExitException()”处的断点

    每次我在 Eclipse IDE Spring Tool Suite 中以调试模式运行 Spring Boot 项目时 线程都会停止在throw new SilentExitException 即使没有断点也行 有什么解决方案可以避免这种行
  • 从 ArrayList Java 中的 HashMap 键中检索所有值

    美好的一天 这让我现在有点困惑 大脑冻结 并且似乎遗漏了一些东西 有一个 ArrayList 我用 HashMap 填充它 现在我放入 HashMap 和 arraylist Map put DATE value1 Map put VALU
  • Hibernate统计打印HQL:null

    我是使用休眠的新手 我打开了统计信息 与普通的 HQL 查询一起 我得到了许多这样的统计信息 INFO Statistics HQL null time 1724ms rows blah 有人可以以任何方式帮助我为什么null查询大约需要
  • 限制执行第三方软件的线程的权限

    我正在开发一个基于 Eclipse 的应用程序 能够执行第三方组件 不是 eclipse plugin 每个组件都有一个列出权限 以及相应动机 的自定义描述符 这样最终用户可以决定是否执行它 组件在单独的线程中执行 如何根据描述符限制这些线
  • RSA Java 加密和 Node.js 解密不起作用

    我有一个系统 需要在 javascript 中生成 RSA 密钥对 然后将公钥存储在服务器端的数据库中 作为字符串 然后 Java 中的服务器端将使用存储的公钥对字符串进行加密密钥并将其发送到客户端 客户端将使用私钥解密该字符串 我在客户端
  • Java(正则表达式)-获取句子中的所有单词

    我需要将 java 字符串拆分为单词数组 假设该字符串是 Hi I need to split this string into a serie s of words 目前我正在尝试使用这个String strs str split w 但
  • java中简单程序中的“未为类型定义方法”错误

    所以我只是想学习 Java 在观看了一些教程并阅读了一些基本内容之后 我对为什么它无法运行感到困惑 package Test public class TestProg public static void main String args
  • 使用 Hibernate/Spring 生成数据库更新脚本

    我有一个项目 我们过去依赖 hibernate 来更新数据库 hibernate hbm2ddl auto update 即使在产品上 我正在将其迁移为使用 liquibase 我唯一担心的是 并不是我的团队中的每个人都是 sql 专家 因
  • 无法在 PHP 中接收 JSON POST 请求

    我正在将 JSON 对象从 Java 传递到 PHP 我正在使用 jdk 1 8 和 WAMPserver 下面是Java代码 import java io IOException import org apache http client
  • 自动装箱是否调用 valueOf()?

    我试图确定以下陈述是否保证为真 Boolean true Boolean TRUE Boolean true Boolean valueOf true Integer 1 Integer valueOf 1 我一直认为自动装箱相当于调用va
  • Java 1.8 和 tomcat 6.0.53 引起:java.io.EOFException:SSL 对等点错误关闭

    java cp catalina jar org apache catalina util ServerInfo Server version Apache Tomcat 6 0 53 Server built Apr 19 2017 22
  • Finalize() 何时执行? [复制]

    这个问题在这里已经有答案了 在一次采访中我被问到 假设 JVM 在 A 类对象未被使用时运行 gc class A some code here protected void finalize code here 它是否保证finalize
  • 如何显示 javadoc 代码块中的泛型?

    我有一个 javadoc 代码块 我想在其中编写一个包含泛型的代码示例 如下所示 public interface SomeInterface
  • JRuby调用了错误的方法

    我在调用 Java 方法时遇到了一个奇怪的问题JRuby http en wikipedia org wiki JRuby 在我的 Java 类中 这些方法定义了两次 看来 JRuby 调用了错误的方法 所以我尝试使用java method
  • 方法中缺少 return 语句错误

    我正在尝试编写一个返回计算机 MAC 地址字符串的静态方法 该函数本身可以在此处找到 http www mkyong com java how to get mac address in java http www mkyong com j
  • 在java中访问dll方法

    我正在尝试访问java中用c 编写的dll方法 从下面的代码我试图构建已成功生成的 dll using System using Microsoft Win32 namespace CyberoamWinHelper public clas
  • Java中ThreadFactory的使用

    有人可以简要解释一下如何以及何时使用 ThreadFactory 吗 使用和不使用 ThreadFactory 的示例可能确实有助于理解差异 Thanks 这是一种可能的用法 假设您有一个ExecutorService它执行你的Runnab
  • DocumentBuilder 解析产生无效字节 2 of 4 字节 UTF-8 序列错误

    我正在尝试解析包含字符串的字节数组Impresi n in XML final DocumentBuilderFactory builderFactory DocumentBuilderFactory newInstance final D
  • Tomcat 中 JNDI 的 Java Mail API 配置文档

    我花了几天时间弄清楚如何通过 JNDI 在 Tomcat 中配置 javax mail Session有认证 现在我明白了 但只是在深入研究代码之后 这次我看到了有史以来最糟糕的代码 javax mail Service connect S

随机推荐

  • WP_Insert_Post 和 GUID 问题 [Wordpress]

    我的主题有一个发布表格 我在那里使用了 wp insert post 我的代码看起来像这样 post array ID gt post author gt post author post category gt post category
  • 计算两个日期之间的差异

    我试过这样 但它不起作用 是这个原因吗getDate仅适用于Date 如何找出这两个日期之间的差异 我是否无法使用此功能 因为我在 salesforce CRM apex 页面中添加了 javascript 编辑1 事实上这也不起作用
  • SphericalUtil.computeDistanceBetween() 与 Location.distanceBetween()

    Google Maps Android API 实用程序库有什么区别SphericalUtil computeDistanceBetween http googlemaps github io android maps utils java
  • 突出显示 TextView 中的文本行,包括所有宽度

    我已经研究过一些如何突出显示某些文本的解决方案TextView using Spannable班级 但它只允许突出显示由字符组成的片段 如果我想突出显示文本行 包括TextView的宽度 但是这一行中的文本没有填充整个视图的宽度 如果有人有
  • 初学者 CUDA - 简单的 var 增量不起作用

    我正在使用 CUDA 开发一个项目 为了掌握它 我有以下代码 include
  • JOIN 和 WHERE 中过滤查询的区别?

    在 SQL 中 我尝试根据 ID 过滤结果 并想知道两者之间是否存在逻辑差异 SELECT value FROM table1 JOIN table2 ON table1 id table2 id WHERE table1 id 1 and
  • 如何加密/解密 Grails 域类中的列?

    因为我想介绍一些数据安全性 所以我想知道是否可以加密 解密 Grails 域类中的特定列 如果可以 最简单的方法是什么来实现这样的事情 假设我有一个 User 类 想要加密 ssn 号或银行帐号 这样它们就不会以纯文本形式存储在数据库中 最
  • 如何从本机 iPhone 应用程序连接到远程数据库

    我想通过互联网从我的本机 iPhone 应用程序连接到远程数据库 MySQL 或 SQL Server 或 Oracle 我在系统中找不到任何要添加的 API 或框架 有谁知道如何连接到远程数据库 很高兴帮助我 非常感谢 我不是 iPhon
  • 如何在git中列出包含另一个分支的分支

    有人可以解释 提供一个示例来说明如何列出 git 中包含另一个分支的分支吗 我可以使用包含属性吗 分支名称只是一个指向给定提交的奇特指针 换句话说 它是一个承诺 https git scm com docs gitglossary gitg
  • 如何打开 .swiftmodule 文件

    我想检查某个公共内容 swiftmodule来自 iOS 框架的文件 Here https lists swift org pipermail swift users Week of Mon 20160111 000827 html htt
  • Objective c 中的属性复制并保留

    我从苹果文档中读到的保留会将保留计数增加 1 而释放将减少 1 这对我来说非常清楚 但在复制和保留的情况下我有点困惑 让我用我正在尝试的代码来解释 财产 property nonatomic retain NSMutableString a
  • 使用 Mongoid 将整个模型设为只读

    我看到 Mongoid 支持只读属性 有没有办法将整个文档或整个集合 模型类标记为只读 您可以访问fields类属性并将哈希的键映射到attr readonly 例如 class Model include Mongoid Document
  • VBA 错误代码需要对象 --- 经过三次检查但仍然不起作用

    下面的注释行继续向我返回错误Run Time Error 424 Object Required 作为自学课程的一部分 我正在研究此问题 并且我已经进行了三次检查 以确保我正确输入代码并且仍然返回此错误 我尝试在此处查看此错误的其他示例 但
  • Phaser 3 spritesheet 未在 iOS 上显示 - 显示黑色矩形

    我有一个使用 Phaser 3 构建的项目 奇怪的是它没有显示 spritesheet 它显示为黑色矩形 它只发生在移动设备上 在模拟器上运行和在移动 safari 上运行 在我的 Mac 上 它显示正常 chrome 和 safari C
  • 如何仅使用 PIL Image 有条件地修改每个像素的像素值

    我想将所有像素 所有 r g b 的像素值减少 100 那么如果将像素值更新为 255 所有 r g b 其中 r g b 且 r gt 127 我尝试过使用 CV2 和 numpy 它工作正常 但是我被要求仅使用纯 PIL 图像 CV2
  • 在python中检查文件属性

    我想使用 python 检查目录中每个文件的存档位 到目前为止 我已经得到了以下内容 但我无法让它正常工作 该脚本的想法是能够查看所有具有存档位的文件 Thanks coding latin 1 import os win32file wi
  • 了解 KeyValue 嵌入式数据存储与文件系统

    我有一个关于文件系统使用的基本问题 我想使用嵌入式 KeyValue 存储 它非常面向写入 持续 说我的价值大小是 a 10K b 1M 并且读取和更新的数量相等 我可以简单地创建包含值及其名称作为键的文件吗 它不会像使用 LevelDB
  • extractin/构建增强程序选项

    我已成功安装 boost 编译二进制文件并构建 bcp 我还能够使用 bcp 提取正则表达式库 完成此操作后 我在下面找到了一个 gcc gen sh 脚本和一堆 makefile my exported boost regex libs
  • 跨连接列的全文搜索?

    我是自由文本搜索的新手 所以请原谅新手问题 假设我有以下全文索引 Create FullText Index on Contacts FirstName LastName Organization Key Index PK Contacts
  • 如何最大程度地减少 UDP 数据包丢失

    我每秒接收约 3000 个 UDP 数据包 每个数据包的大小约为 200 字节 我编写了一个 java 应用程序 它侦听这些 UDP 数据包并将数据写入文件 然后服务器以先前指定的速率发送 15000 条消息 写入文件后 它仅包含约 350