我有一个 C++ 应用程序需要将图像从网络摄像头实时发送到同一台 PC 上的 C# 应用程序。无法从 C# 代码调用 C++ 代码,因此我需要通过命名管道实现通信以发送图像。
我以前从未做过任何通信编程,我想知道如何解决这个问题。
我的第一个想法是让 C++ 应用程序在单独的线程上创建命名管道服务器,创建后线程将持续等待,直到可以发送图像。届时它将发送图像。
同样,C# 应用程序将创建一个充当客户端的新线程。它会连接到服务器并不断循环,直到有图像可用。届时它将接收图像并将其存储在主线程可以访问的队列中。
这有意义吗?这是最好的方法吗?
最佳答案
我支持在这里使用 COM 的想法。坦率地说,我会用 C# 编写 COM 对象,因为它更容易(比 C++)。 C# 具有出色的 COM 互操作性。参见 http://msdn.microsoft.com/en-us/library/aa645712%28v=vs.71%29.aspx .我编写了一个类似工作的 MS VSS COM 接口(interface),它可由 Python(我们的构建系统)调用,与另一个供应商公开的 C# .NET 接口(interface)连接;因为它是低级 COM,所以它也可以从 JScript、C++ 等调用。
除非你要跨机器和/或需要 Windows 安全作为其中的一部分,否则我会避免使用命名管道,尽管你实际用于跨对象传输的东西可以是任何东西,可能由大小/速率决定涉及。
关于c# - 在 Windows 中使用命名管道 (C++/C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9636789/