同じシステム上で動作するjava/C++/pythonプロセス間のIPCメカニズム(ショートメッセージの送信)を実装する必要があります。実装する1つの方法は、TCPプロトコルを使用してソケットを使用することです。これには、接続の維持および他の関連する活動が必要です。 代わりに、私は接続を必要としないUDPプロトコルを使用することを考えています。メッセージを送信できます。 私の質問は、同じマシン(IPC用)のUDPが同じ不利な点を持っているかどうかです(信頼性の低いパケット配信、故障パケットなど)。プロセス間通信のためのUDP
答えて
はい、まだ現実的ではありません。通信は名前付きパイプや共有メモリを使用しようと
編集:
はあなたはMPI(Javaはよくサポートされていませんaltough ...)や、スリフトのようなものを考えられなかった、あなたのアプリケーションの要件を知っていますか? (http://thrift.apache.org/)
ローカルUDPはまだun unです信頼できるが、主な利点はUDPマルチキャストである。 1つのデータパブリッシャと多数のデータサブスクライバを持つことができます。カーネルは、各サブスクライバにデータグラムのコピーを配布します。
一方、Unixローカルデータグラムソケットは、信頼性が要求されますが、マルチキャストをサポートしていません。
申し訳ありませんが、これはわかりません。 UDPマルチキャストは平凡なUDPよりも信頼できると言っていますか?また、ループバックインターフェイス上でUDPマルチキャストを使用して、マシン境界にあるクロスプロセスpub/subを達成することをお勧めします。 – madhu
UDPは、ユニキャスト、マルチキャスト、またはブロードキャストのいずれの場合でも信頼性がありません。ループバックインターフェイス上のマルチキャストに問題はありません。 –
IPCでUDPが信頼できない理由を説明してください。ホストシステムを去ることは決してないので、輻輳やビットエラーなどの問題に直面してはいけません。なぜそれが信頼できないのですか? – Tahlil
ローカルUDPは、依然として信頼性が低く、ファイアウォールでブロックされることもあります。インタースレッド通信にローカルUDPを使用しているMsgConnect製品でこれに直面しました。 BTW MsgConnectは、ソケットを処理する必要がないようにタスクのオプションにすることができます。残念ながら、Pythonバインディングはありませんが、「ネイティブ」なC++実装とJava実装が存在します。
ローカルUDPは、ネットワーク上よりも信頼性が低く、50%+パケットの損失は信頼性がありません。それはひどい選択です、カーネルの開発者は、要求の不足に品質を帰属しています。
私は、メッセージを基にしたミドルウェアを調べることをお勧めします。これは、BSDソケット互換インタフェースを使用して、簡単に学習できるようにすることです。提案はZeroMQで、これにはC++、Java、Pythonバインディングが含まれています。
私はZeromqを以前に評価しましたが、それは必要性に完全に合っています。しかし、java(jar)とC++(lib)の両方にライブラリの依存関係が必要です。私は、既存のAPIをjavaおよびC++で使用して同じものを実現したいと考えていました。また、UDPパケットの損失について質問したかったのですが、データや記事があるので、UDP通信が同じマシンで信頼できない理由をよく理解できます。 – madhu
UDPを手渡すものは何もありません。ZeroMQ& JNIライブラリが必要ない場合は、独自のネイティブバージョンを作成してください。 –
@ Steve-oローカルUDPはネットワーク上よりも信頼性が低いと説明できますか?ローカルネットワークに加えて、ローカルネットワークにはどのような障害がありますか? – Kumar
- 1. プロセス間通信用UDP
- 2. プロセス間の通信
- 3. プロセス間通信
- 4. javaプロセス間通信
- 5. Javaプロセス間通信
- 6. SystemTapプロセス間通信
- 7. 親プロセスと子プロセスの間の通信
- 8. Linuxのプロセス間通信
- 9. C++でのプロセス間通信
- 10. Pythonプロセス間の通信
- 11. Luaでのプロセス間通信
- 12. F#のプロセス間通信
- 13. リアルタイムデータのiOSプロセス間通信
- 14. Android - sendBroadcast()とonReceive() - プロセス間通信のための同期ソリューション
- 15. JavaとC#間のUDP通信
- 16. AndroidJUnitとのプロセス間通信またはadb通信
- 17. 言語/オペレーティングシステム間のプロセス間通信
- 18. iPhoneアプリ間のプロセス間通信
- 19. PHP Mysqlプロセス間通信TLS
- 20. プロセス間通信、オペレーティングシステム、パイプ
- 21. パイプを使ったプロセス間通信
- 22. 直接接続された2台のPC間のUDP通信
- 23. 2つの実行中プロセス間のプロセス間通信
- 24. 2つのプロセス間の通信方法
- 25. Windowsでのプロセス間通信(IPC)の例
- 26. 2つのプロセス間のFIFO通信c
- 27. RailsとRubyの間の通信EventMachineプロセス
- 28. プロセス間の通信方法は?
- 29. MPI内部:プロセス間の通信実装
- 30. Androidのプロセス間通信BroadcastReceiver、AIDL
名前付きパイプはJavaで動作しません – madhu
+1スリフトリンク – vz0