本地网络上的可靠组播

2024-01-28

我正在使用 C++ 和 Qt 实现一个消息系统。经过深思熟虑,我确定多播或多播风格的技术最能解决我的问题。然而,我了解到UDP的不可靠性并认为这是不可接受的。

我的要求如下:

  • 消息将以二进制序列化形式发送。
  • 从网络上的任何给定节点,我必须能够向其他节点发送消息。
  • 消息传递must被保险。

我听说过 OpenPGM 和 NORM 作为 UDP 的替代品。如果有人有这方面的经验,可以分享一下吗?

我也对自己在应用层实现“可靠”多播的可能性持开放态度,但如果有一个库已经实现了这一点,我不希望这样做。

我使用的是 C++ 和 Qt,因此基于 .NET 或 Java 的解决方案是不可接受的,除非它们是开源的并且我可以将它们移植到 C++。

非常感谢。

编辑20120816T1853 MDT:另一个问题:PGM 或 NORM 是否必须在硬件/IP 级别实施?或者它们可以叠加在现有协议之上吗?


我们已经通过 UDP 实现了自己的可靠多播协议,称为RSP http://www.equalizergraphics.com/documents/design/multicast.html,因为我们需要一些跨平台的东西,而当时在 Linux 和 Windows 之间找不到好的解决方案。 Windows PGM 实现会断开离开发送窗口的慢速客户端的连接,而我们的实现则类似于 TCP 来限制发送方。 Afaik OpenPGM 可以配置为执行相同的操作。

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

本地网络上的可靠组播 的相关文章

  • 使用 std::packaged_task/std::exception_ptr 时,线程清理程序报告数据争用

    我遇到了线程清理程序 TSan 的一些问题 抱怨某些生产代码中的数据争用 其中 std packaged task 通过将它们包装在 std function 中而移交给调度程序线程 对于这个问题 我简化了它在生产中的作用 同时触发 TSa
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 使用 C# 读取 Soap 消息

  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 特殊字符匹配失败之前的字边界

    这是我尝试过的 CSharpClassNameRegex new Regex b x36 class function struct enum interface
  • 是否可以找出某个列表是否是固定大小的?

    是否可以找出某些列表是否是固定大小的 我的意思是 例如这段代码 String arr a b List
  • 如何在 Windows 上查询打印队列

    我们正在开发一个关键应用程序 需要对打印的文档进行最好的控制 为了确定打印了哪些文档 我们要检查打印机队列 我们如何查询 Windows 上的打印队列 状态 队列列表 错误 枚举打印机 http msdn microsoft com en
  • Python - 如何从字符串中删除隐藏的符号?

    有时我的字符串里有奇怪的字符 它们在浏览器中不可见 但属于字符串的一部分 并在 len 中计数 我怎样才能摆脱它 Strip 删除正常空间 但不删除该符号 使用来自的字符类别string模块 如果你想允许所有可打印字符 你可以这样做 fro
  • 如何将图像传递给 Django 模板?

    假设views py中对应的函数如下所示 from PIL import Image def get img request img source base image Image open os getcwd deskprod media
  • 为 pyinstaller 创建的 .exe 生成证书

    我为我的公司编写了一个脚本 随机选择员工进行随机药物测试 它工作得非常好 除非我把它交给了使用该程序的人 她点击了它 然后弹出一条消息 询问她是否信任该程序 无论如何点击 运行 后 AVG 在最终加载之前又标记了两次 我读到别人的评论说要在
  • 为什么空行没有存储在变量中

    我正在使用下面的代码 bin bash for host in cat server txt do echo host done server txt 包含 server1 com server2 com server3 com serve
  • 将冻结模型“.pb”文件转换为“.tflite”文件所需的参数 input_arrays 和 output_arrays 是什么?

    我需要转换我的 pb张量流模型和我的 cpkt文件到一个tflite模型以使其在移动设备中工作 有没有什么直接的方法可以找出如何找到我应该用于 input arrays 和 output arrays 的参数 import tensorfl
  • Mongoose getter / setter 用于标准化数据

    I have User模式有一个username场地 我希望此字段区分大小写 以便用户可以注册诸如BobDylan 但是 我需要我的架构来验证新条目 以检查是否有重复项 区分大小写 例如bobdylan 我的研究告诉我 我应该在模式中创建一
  • Delphi 自定义弹出/下拉菜单,如何实现?

    我想制作一个自定义下拉 弹出菜单 其下方有一个很好的阴影 问题是它不是标准菜单 我需要在弹出菜单 下拉菜单中放置一些组件 所以基本上我想要一个下拉菜单 我可以做任何我想做的事情 而不仅仅是简单的菜单项 我希望它像正常的弹出菜单一样工作 问题
  • 箭头键键入大写字母而不是移动光标

    我已经使用 homebrew 安装了最新的 vim 还从 google code 主页安装了 mac vim 在 mac vim 中一切正常 但是当我在 mac 的terminal app 中运行 vim 并进入插入模式时 我会得到 A B
  • 在文件和文件夹的名称中递归地填充 0

    我有一个文件夹 其中包含有关某个特定主题的视频讲座 它的结构如下 1 fol 1 file mp4 2 file mp4 3 file mp4 2 fol 10 file mp4 4 file mp4 5 file mp4 6 file m
  • 谷歌图表重绘/缩放窗口大小

    如何在窗口调整大小时重绘 调整谷歌折线图的大小 为了仅在窗口调整大小完成时重绘并避免多次触发 我认为最好创建一个事件 create trigger to resizeEnd event window resize function if t
  • Kestrel MaxRequestBodySize 上传文件超出限制

    我确实遇到了红隼的一个奇怪的问题 我无法上传超过 kestrel MaxRequestBodySize 的多个文件 预期的行为是抛出BadHttpRequestException当我尝试阅读时this Request Form Files
  • 使用 bash 脚本比较两个文件并打印详细的差异报告

    我在 Unix 系统上有 2 个大文件 每个文件有数千行和大约 80 列 我已根据一组唯一键对文件进行排序 以便我们始终比较相同的行 为了便于理解 我在这里只给出 3 行和 7 列 File 1 d report ref date 2021
  • Angular-Material 设置了只有月份和年份的日期选择器

    我正在使用角度 1 5 9 和角度材料设计 1 1 1 我想添加一个仅包含月份和年份的日期选择器 没有日期 它用于结帐表单中的信用卡到期字段 您可以设置md mode month 下面的工作演示
  • 在opencv上检测非闭合轮廓

    我正在做自动卡检测的计算机视觉项目 我需要将卡片与背景分开 我已经应用了精明的边缘检测 使用自动参数设置 opencv中Canny操作自动计算低阈值和高阈值 https stackoverflow com questions 4292249
  • 将 EJB 作为实例变量注入 servlet 是否安全?

    我们都知道 在 Web 层中 可能只存在给定 Servlet 的单个实例来服务多个请求 这可能会导致实例变量中的线程问题 我的问题是 使用 EJB 注释将 EJB 作为实例变量注入到 servlet 中是否安全 我最初的直觉是否定的 因为假
  • 规范化音频,如何将浮点数组转换为字节数组?

    大家好 我正在播放音频文件 我把它读作byte 然后我需要通过将值放入 1 1 范围内来标准化音频 然后我想将每个浮点值放入byte i 数组然后把它byte 返回到正在播放的音频播放器 我试过这个 byte data ar ReadDat
  • 本地网络上的可靠组播

    我正在使用 C 和 Qt 实现一个消息系统 经过深思熟虑 我确定多播或多播风格的技术最能解决我的问题 然而 我了解到UDP的不可靠性并认为这是不可接受的 我的要求如下 消息将以二进制序列化形式发送 从网络上的任何给定节点 我必须能够向其他节