コンパイル済みC++プロセスからコンパイル済みC#プロセスに画像データを送信しようとしています。 C++プロセスは、Webカメラにアクセスして、画像に対して何らかの処理を行っています。画像は、各ピクセル値がそのピクセルのグレースケール値である8ビット値(0〜255)であるピクセルの2Dアレイによって表される。 画像のサイズは640 x 480です。C++プロセスからC#プロセスに画像を送信する
C#アプリケーションはさらに処理を行い、この画像を画面に表示します。プロセスはどちらも私のラップトップ(Windows 7 OS)上で同時に実行されていますが、すべてのステップを実行するプロセスを1つ作成することはできません。そのため、C++コードとC#コードが通信する必要があります。
私はこれを行うための最善の方法は何ですか?私は、C#部分にUDPまたはTCPサーバを記述し、C++部分にクライアントを書くと、データグラムとして画像データを送ることができます。私はこれが最善の方法であるかどうか、それがUDPかTCPの方が良いかどうか疑問に思っていましたか?
EDIT:C++プロセスはアンマネージC++であり、管理DLLとして実行するオプションはありません。名前付きパイプを使用して画像を送信できますか?
ローカルで通信している場合、最後にUDPが順番に保証されますか?私はイメージがUDPの限界を超えていることに気が付いていますが、もしそれがインオーダーであれば、イメージを分割して送信する必要があります。
共有メモリが役立つかもしれない:http://stackoverflow.com/a/925272/390913 – perreal
通常、信頼性が高くパケット損失を処理するため、TCPを使用することをお勧めします。しかし、あなたのケースでは、両方のアプリケーションが同じマシン上にあるので、パケットの損失はなく、どちらか一方で逃げることができます。 UDPの利点は速度です。 UDPはパケットの損失をチェックせず、TCPより高速ですので、一度に1つのイメージを送信する代わりにWebカメラからビデオをストリーミングする場合、UDPを使用してパフォーマンスが向上することがあります。 – arc
可能な複製http://stackoverflow.com/questions/539908/interprocess-communication-between-c-sharp-application-and-unmanaged-c-applica –