我有一个C ++应用程序,需要实时将networking摄像头的图像发送到同一台PC上的C#应用程序。 C ++代码不能从C#代码调用,所以我需要通过命名pipe道实现通信,以发送图像。
我从来没有做过任何的通信编程,我想知道如何解决这个问题。
我的第一个想法是让C ++应用程序在一个单独的线程上创build命名的pipe道服务器,在创build之后线程会一直等待,直到图像可以发送。 在这一点上,它会发送图像。
类似地,C#应用程序将创build一个充当客户端的新线程。 它会连接到服务器,并不断循环,直到图像可用。 在这一点上,它会收到图像并将其存储在主线程可以访问的队列中。
这有道理吗? 这是最好的办法吗?
我在这里第二个使用COM的概念。 坦率地说,我会用C#编写COM对象,因为它比C ++更容易。 C#具有很好的COM互操作性。 请参阅http://msdn.microsoft.com/en-us/library/aa645712%28v=vs.71%29.aspx 。 我写了一个类似MS VSS的COM接口,可以通过Python(我们的构建系统)调用,与另一个供应商公开的C#.NET接口连接; 因为它是低级COM,它也可以从JScript,C ++等调用。
除非你要跨机器和/或需要Windows安全作为其中的一部分,否则我会避免命名管道,但实际上用于传输对象的内容可能是任何事情,可能是由所涉及的大小/速率决定的。