2012-03-05 43 views
1

我有两个应用程序,一个用C编写,另一个用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

你的问题是什么? – 2012-03-05 12:27:14

+0

@ C.Evenhuis我想实现上面在C和C#方面描述的数据传输,你可以发布一些示例代码吗? – P5music 2012-03-05 12:42:57

+0

我没有任何东西,通常是在这里发布的人开发自己的软件,如果遇到特定的问题或问题,可以提问。 – 2012-03-05 12:46:37

回答

3

如果你的问题是如何传输这些数据,你的问题的真正简短的答案是base64。它是专门为此目的而创建的,并且已经为C和C#提供了现成的库(只需查找“C#base64”)。

它几乎和原始二进制编码一样有效(就数据传输而言)。

+0

Convert.FromBase64String方法在C#方面很有用,但是您可以发布一些链接到优秀的C编码器代码,这些代码最好不需要包含库。这个SO线程好吗? http://bit.ly/u1K2X0 – P5music 2012-03-05 13:29:04

+0

是的,它给你一些很好的选择。根据许可证,您可以复制处理编码的部分,而不包括整个库(例如,来自glib或GNU coreutils源代码)。 – 2012-03-05 15:25:20

+0

我试过这个base64 enconding,但它非常慢。当你说它在数据传输方面几乎和原始二进制一样有效时,你的意思是性能不好吗?或者它是缓慢的控制台I/O通道? – P5music 2012-03-05 17:55:26

相关问题