2012-03-05 8 views
1

2つのアプリケーションがあります.1つはCで書かれ、もう1つはC#で書かれ、コンソールストリングメッセージで話します。どちらも、もう一方が文字列メッセージを送信するまで待機します。コンソールからCからC#にバイナリデータを渡します。

今私は、Cアプリケーションが同じコンソールI/O「チャネル」を介してバイナリ形式のイメージを送信し、C#アプリケーションがそれを受信して​​表示するイメージとして使用することを望みます。私はそれが可能であることを知っています、参照:C/C++: is it possible to pass binary data through the console?

私は両方のアプリケーションのソースコードにアクセスできます。私は、Cアプリケーションコードが画像をディスクに書き込む場所を知っています。 C#アプリケーションは、コードのこの部分でCアプリケーションの出力を取得します。

process.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived); //void 
p_OutputDataReceived(object sender, DataReceivedEventArgs e) //e.Data. 

どのように私は、このバイナリイメージ転送のCおよびC#の部分をコーディングする必要がありますか?ありがとう。

+2

あなたの質問は何ですか? –

+0

@ C.Evenhuis上記のデータ転送をCとCの両方の側で説明したいと思いますが、いくつかのサンプルコードを投稿できますか? – P5music

+0

ここに投稿した人は、自分のソフトウェアを開発し、特定の問題や質問に遭遇した場合に質問します。 –

答えて

3

あなたの質問がこのデータを転送する方法である場合、あなたの質問に対する本当に短い答えはbase64です。この目的のために特別に作られたもので、C#とC#の両方のための既製のライブラリを持っています(「C#base64」など)。

これは、(転送されたデータに関して)生のバイナリエンコーディングとほぼ同じくらい効率的です。

+0

Convert.FromBase64StringメソッドはC#側で便利ですが、ライブラリを含める必要のない良いCエンコーダコードへのリンクを投稿することができます。このSOスレッドは良いですか? http://bit.ly/u1K2X0 – P5music

+0

はい、良いオプションがあります。ライセンスに応じて、エンコーディングを扱い、ライブラリ全体を含まない部分(glibやGNU coreutilsソースなど)をコピーするだけです。 –

+0

私はこのbase64 encondingを試みましたが、それは非常に遅いです。転送されるデータの観点から、生のバイナリと同じくらい効率的だと言うと、代わりにパフォーマンスが悪いということですか?それとも、コンソールI/Oチャンネルが遅いのですか? – P5music

関連する問題