c# - 在 Windows 中使用命名管道 (C++/C#)

标签 c# c++ windows named-pipes interprocess

我有一个 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/

相关文章:

C# - 无法连接到远程 MySQL 服务器

c# - 该函数不响应 while 循环中的计数器

c# - 如何通过 lambda/方法表达式使用 linq 创建嵌套组

c++ - 当右值不实现 move 时,在具有 move 语义的容器上实现 insert()

c++ - 所有类实例方法的打印语句最后都打印出来了?

windows - 尝试运行 Matlab-Compiler-Runtime 应用程序时,Windows 7 中出现 SxS 错误

c# - 使用 JSON 字符串填充 ASP.Net DropDownList

c++ - 结果得到-858993460 c++

c - 正则表达式中 *.* 和 * 有什么区别?

c# - WPF应用程序类和主窗口初始化