Linuxで動作するネットワークアプリケーションがあります。私がやりたいのは、アプリケーションがLANに存在することをアナウンスできるようにしてから、他のアプリケーションにいくつかの変更について通知できるようにすることです。LAN内の他のホストでアプリケーションのインスタンスがいくつ動作しているかわからないため、SCTPを使用できません。マルチキャスト通信が唯一の方法です(または他の解決策を知っていますか?)。
マルチキャストアドレスで送信したい構造は固定サイズ(320バイト)で、実際には数値とビットフラグの構造であるバイナリデータが含まれています。
UDP通信の信頼性を少し高めることができるよく知られたプログラミング手法があるかどうか疑問に思います。私は2つのことだけを理解しました:
- 私は、320バイトよりも小さいrecvmsg()によって受信されたすべてのパケットをドロップします。
- すべてのパケットをよく知っているヘッダーとフッターで囲み、新しいメッセージを受信するたびにそれらをチェックしますが、パケットはまだ中央のどこかで破損している可能性がありますか?
編集: PGNプロトコルを見つけましたが、x86で動作することがわかっているのはLinuxの実装だけです。ARMアーキテクチャでもプログラムを実行したいので、これは部分的な解決策です。