1

私は最近、JavaとC++の間の通信に最適なIPCプロトコルを見つけることを余儀なくされました。

私はこれに最適なプロトコルを見つけるためにSOを検索しましたが、SOではソケットがこれに最適なアプローチであることがわかりました。しかし、ソケットの短所や長所については何も見つかりませんでした!したがって、このプロトコルの長所を知りたいだけでなく、他のプロトコルとソケットの長所を知り、アプリケーションに最適なプロトコルを選択したいと思います。

私の2つのアプリケーションが同じマシンで実行されている可能性が非常に高いです。

更新最初にプロトコルを選択してから、どのシステム構成で実行するかを決定できます。

4

1 に答える 1

3

最適なIPC方法は、実際には通信の種類によって異なります。メッセージの受け渡し、相互排他的な実行の確保、データの共有はさまざまなIPCですが、ソケットは3つすべてのソリューションではありません。

アプリケーション間で受け渡したい情報の形式について考えたり、情報を提供したりします。おそらく、典型的なシナリオ(生産者/消費者問題など)が見つかります。

原則として旧式のTCPサービスに匹敵するメッセージパッシングの問題がある場合、ソケットは十分にテストされており、デバッグが容易であるため、良い考えです。これらは完全なデカップリングを提供しますが、カーネルが1つのアプリケーション(送信者または受信者)のブロックを効率的に実行できるため、ローカルで実行してもパイプと比較して欠点はありません。

ソケットは、UDP、TCP、またはUnixソケットにすることができます。いずれの場合も、ソケット付きのローカルIPC用のネットワークカードは必要ありません。

于 2012-04-08T16:42:51.867 に答える