局域网内可靠的组播通信

发布于 2024-10-16 12:57:24 字数 562 浏览 4 评论 0原文

我有一个在 Linux 上运行的网络应用程序。我想要做的是让我的应用程序能够宣布它在 LAN 中的存在,然后通知其他应用程序有关一些更改。因为我不知道我的应用程序有多少实例已经在 LAN 中的其他主机上运行,​​所以我无法使用 SCTP,多播通信是唯一的方法(或者也许您知道其他解决方案?)。

我想要通过多播地址发送的结构具有固定大小(320 字节)并包含二进制数据,这些数据实际上是数字和位标志的结构。

我想知道是否有任何众所周知的编程技术可以使 UDP 通信更加可靠。我只弄清楚了两件事:

  1. 我丢弃了由 recvmsg() 接收到的所有小于 320 字节的数据包。
  2. 我用众所周知的页眉和页脚包围每个数据包,然后每次收到新消息时检查它们,但是数据包仍然可能在中间的某个地方损坏,对吧?

编辑: 我找到了一个 PGN 协议,但已知唯一可在 x86 上运行的 Linux 实现。这对我来说是部分解决方案,因为我也想在 ARM 架构上运行我的程序

I have a network application working on Linux. What I want to do is to make my application able to announce it's presence in LAN and then notify other applications about some changes. Because I don't know how many instances of my application already works on other hosts in LAN I cannot use SCTP, multicast communication is the only way (or maybe you know other solution?).

Structure I want to send over multicast address has fixed size (320 bytes) and contains binary data, which are in fact structure of numbers and bit flags.

I'm wondering if there are any well-know programming techniques, which can make UDP communication a bit more reliable. I only figured out two things:

  1. I drop all packets received by recvmsg() which are smaller then 320 bytes.
  2. I surround every packet with with well-know header and footer, and then check them each time when I receive new message, however packet still can be damaged somewhere in the middle right?

Edit:
I found a PGN protocol, but the only Linux implementation is known to work on x86. It's partial solution for me, because I want to run my program on ARM architecture too

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

醉殇 2024-10-23 12:57:24

你可以尝试将PGM移植到ARM上,OpenPGM没有那么多要求,它已经在IBM s390大型机上运行良好。

披露:我是 OpenPGM \:D/ 的作者

You can try porting PGM to ARM, there are not that many requirements in OpenPGM, it already runs fine on IBM s390 mainframes for example.

Disclosure: I'm the author of OpenPGM \:D/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文