問題タブ [reliable-multicast]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
protocols - 信頼できるマルチキャストのための最も効率的なプロトコルは何ですか?
送信者がイーサネットを介して比較的大量のデータ(たとえば1秒あたり数メガバイト)を同じサブネット上の適度な数の受信者(たとえば12未満)にマルチキャストする必要がある場合、最も効率的なプロトコルは何ですか?信頼できるとは、パケットが失われた場合に、プロトコルによって、受信者でデータが失われないようにパケットが確実に再送されることを意味します。効率という用語を定義するのは非常に困難ですが、スループットを最大化し、両端のCPU使用率を抑えてネットワーク帯域幅を最小化するとします。それはまだ明確な定義ではありませんが、私が思いつくことができる最高のものです。ストリーム指向またはメッセージ指向のプロトコルのいずれかが受け入れられます。
実際の例をいただければ幸いです。長所と短所を説明できれば、主観的な回答、つまりお気に入りのマルチキャストプロトコルは何ですか。
c++ - ローカル ネットワーク上の信頼できるマルチキャスト
C++ と Qt を使用してメッセージング システムを実装しています。よく考えた結果、マルチキャストまたはマルチキャスト スタイルの手法が問題を解決するのに最適であると判断しました。しかし、私は UDP の信頼性の低さを知り、受け入れられないと考えています。
私の要件は次のとおりです。
- メッセージは、バイナリのシリアル化された形式で送信されます。
- ネットワーク上の任意のノードから、他のノードにメッセージを送信できなければなりません。
- メッセージの配信には保険が必要です。
UDP の代替として OpenPGM と NORM があると聞いたことがあります。誰かがこれらのいずれかの経験がある場合は、共有していただけますか?
また、アプリケーション層で「信頼できる」マルチキャストを自分で実装する可能性にもオープンですが、これを既に実装しているライブラリがある場合はそうしないことを好みます。
私は C++ と Qt を使用しているため、.NET または Java ベースのソリューションは、オープンソースでない限り受け入れられず、C++ に移植する可能性があります。
どうもありがとうございました。
EDIT 20120816T1853 MDT:追加の質問: ハードウェア/IP レベルで PGM または NORM を実装する必要がありますか? それとも、既存のプロトコルの上に重ねることができますか?
c - 呼び出しの受け入れ中に IPPROTO_RM がブロックする
この質問はhttps://stackoverflow.com/questions/11650328/using-reliable-multicast-pragmatic-general-multicast-not-returning-from-acceptに似ていますが、私のコードはそれとは少し異なるため、結果として生じる可能性があります別の答えで。
信頼できるマルチキャスト サーバー/クライアントの概念実証のセットアップを取得しようとしています。
ソリューション自体はサーバー/クライアント接続です。クライアントは、TCP/IP 経由でサーバーに接続します。次にサーバーは、クライアントがリッスンするための信頼できるマルチキャスト ソケットを開きます。クライアントは TCP 経由でメッセージを送信し、サーバーはそれを 経由でエコー バックしIPPROTO_RM
ます。最終的な目標は、多数のクライアントをサーバーに接続し、すべてのクライアントがすべてのエコー メッセージを受信するようにすることです。
サンプル コードはこのページに基づいています。
同様に RM ソケットをセットアップしました (以下のリストを参照)。TCP ソケットは正常に動作しています。問題は RM ソケットにあります。サーバーはマルチキャスト ソケットを開きbinds
、connects
マルチキャスト アドレスに適切に接続します。ただし、クライアントはlistens
正しく、呼び出しはaccept
永久にブロックされます。
クライアント プロセスとサーバー プロセスの両方が同じホスト上で実行されています。
確認したところ、マルチキャスト サポートがホスト (Server 2008) にインストールされています。
更新:最初に送信者側からソケットにデータを送信すると、acceptが返される場合があることに気付きました。これは理想的ではなく、信頼性もありません。
更新: 標識はスイッチを指しています。小さなハブではうまくいかないようです。建物全体の通信が途絶えるという愉快な事件がありました。
リスト
サーバーはマルチキャスト送信者を作成して接続します
クライアントがマルチキャスト リーダーを作成して受け入れる
java - Java Client-Server - 複数のサーバーへのファイルの配布
次のことを行う Java クライアント/サーバー アプリケーションを作成したいと考えています。
- クライアントは 2 つのサーバーのうちの 1 つに接続します
- サーバーがテキスト ファイルまたはそのコンテンツをクライアントに送信する
- ユーザーがファイルを編集する
- クライアントはファイルを両方のサーバーに同時に確実に送り返します
- クライアントがアプリケーションを閉じる
おまけ: これらのサーバーの 1 つが送信時にダウンしている可能性があるため、起動時にファイルを受信する必要があります。
これを可能にするには、どのアーキテクチャまたはフレームワークが適切で軽量ですか? JGroups は良いスタートですか?
編集:次の最小限のネットワークを想定する必要があります。
- 1 つ以上のクライアントがアプリケーションを開始しますが、同時にファイルを編集することは許可されていません。
- 1 つ以上のサーバーがあり、そのうち少なくとも 1 つが常にアクティブです (どれがランダムか)。
- クライアントには、すべてのサーバー アドレスを含む .xml ファイルがあります。
tcp - UDP マルチキャストの信頼できる実装方法
私は大学の試験の準備をしていますが、昨年の質問の 1 つは「UDP マルチキャストを信頼性の高いものにする方法」(tcp や失われたパケットの再送信など) でした。
私はこのようなことを考えました:
サーバーは UDP を使用してマルチキャストを送信します
すべてのクライアントは、そのパケットの受信確認を送信します (TCP を使用)
全員がパケットを受信しているわけではないことをサーバーが認識した場合、特定のクライアントにマルチキャストまたはユニキャストを再送信します。
問題は、通常はパケットを失い、サーバーに再送信を強制する 1 つのクライアントが存在する可能性があることです。
いいですか?
sockets - 信頼できるマルチキャスト ライブラリ C++
「信頼できるマルチキャスト」を実現するための既知の方法に答えるこれとこのスタックオーバーフローの質問を認識していますが、遅れて、ルーターでさえUDPを介して設計されたカスタムプロトコルを処理するようにプログラムする必要があると言及しているWebサイトに出くわしました。それは本当ですか?
基本的に、アプリケーションにマルチキャストを使用したいのですが、UDP を信頼できる方法で処理するようにカスタム プロトコルを構成するためにルーターを変更するという制限を課したくありません。たとえば、マルチキャストを処理するために UDP を介して PGM プロトコルを実装/使用することを考えていました。しかし、ルーターは PGM もサポートする必要があるとのことでした。これにより、顧客は私のソリューションのインフラストラクチャを変更する必要があるため、ソリューションの提供が制限されますが、これは保証されません。
ネットワーク インフラストラクチャを変更せずに、信頼できる方法で UDP パケットを処理するために実装できるソリューションがあれば教えてください。
前もって感謝します。
編集:
ルーターでマルチキャストを有効にしたくないと言うつもりはありません。ルーターでマルチキャスト ルーティングを確実に有効にします。PGM の実装について読んだとき、ルーターでさえ PGM 対応であるべきだと言う人もいましたが、これは店舗で市販されているルーターとは異なるルーターだと思いました。私の理解は間違っていますか?
multicast - IP マルチキャストと基本マルチキャスト (B-Multicast) の違い
マルチキャストと基本マルチキャスト (B-Multicast) の違いは何ですか?
それぞれがどのように正確に機能しますか?
これは分散システムに関連しています。基本的な保証と信頼性を備えたメッセージを配信するだけの基本的なマルチキャストがあります。プロセスは生きていてクラッシュしないので、メッセージは配信されます。ただし、プロセスがクラッシュした場合、信頼性は保証されません。したがって、R マルチキャスト (信頼できるマルチキャスト) という用語が導入されました。R マルチキャストは、ATOMIC の概念を使用することで高度な信頼性をもたらします。整合性、有効性などのいくつかの機能に依存しています。さらに、グループの各メンバーも配信後にメッセージをマルチキャストするという合意があります。この合意により、100% の完全性がもたらされます。さらに、B マルチキャストまたは R-IP マルチキャストと RB マルチキャストなどの IP マルチキャストのいずれかで実装できます。RB マルチキャストでは、インフラストラクチャがスケーラブルな場合、送信者は ack によって内破されますが、R マルチキャスト オーバー IP マルチキャストでは、IP マルチキャスト技術により、メッセージの省略と失敗が少ないため、NACK のみが返送されます。やっぱりIPマルチキャストとBマルチキャストの違いが知りたいです。それらは正確にどのように機能しますか?書かれている概念は知っていますが、詳細が必要です。
windows - UFTP が期待どおりに動作しない
UFTP を使用して、サブネットワーク コンピュータ内でファイルを転送しています。
しかし、すべてのコンピューターに送信するのではなく、特定のコンピューターのみを送信するために -H を使用すると、期待どおりに動作しません。
詳しく説明しましょう:
- IP 172.21.170.198、172.21.181.216 の同じネットワークに 2 台の Windows マシンがあります。
- システムの1つから、以下のコマンドを使用してファイルを送信しました
uftp.exe -R 100000 -H 172.21.170.198,172.21.181.216 e:\setup.exe
- しかし、両方のマシンがそれらのファイルを受信しません。
しかし、このコマンドを使用すると、両方のマシンがファイルを受け取ります。
uftp.exe -R 100000 E:\setup.exe
間違いを犯したかどうか知りたいです。
間違っている場合は修正してください。
前もって感謝します。
ご不明な点がございましたら、お手数ですが元に戻してください。
よろしく、
ティヤグ