使用C++在同一系统上运行的 2 个服务之间进行通信

Communication between 2 Services running on same system using C++

本文关键字:服务 之间 通信 运行 C++ 系统 使用      更新时间:2023-10-16

在C++中,我有2个服务(比如Windows服务(在系统上运行。显然,两者都有其相应的EXEsA.EXe和B.EXE。

如果我想在这 2 个 Windows 服务之间查询和接收一些数据,可以通过从 1 个服务传递一个结构的指针来完成作为函数调用,并让另一个服务使用传递的指针填充结构。

A 和 B 的通用头文件:

struct Abc
{
int a;
}

现在假设服务 A 通过调用服务 B 中的函数发送此结构对象及其指针或通过引用传递.EXE。此函数调用是否适用于 2 个服务,数据是否可以以这种方式在 A 和 B 之间传输?

还是我需要像套接字这样的 IPC 机制。

实现 2 个服务之间数据传输的最佳方法是什么 在同一系统上运行

IPC代表"进程间通信"。 您有两个服务(每个服务都在自己的进程中运行(,并且您希望在它们之间进行通信。 您绝对需要一个IPC机制。

您的选择是:

  • 插座(在顶部分层boos::asio将是一个好主意(
  • 共享内存映射和信令事件(不要忘记使用互斥锁或类似内容,并且不要忘记建立锁层次结构,以免出现死锁(。 这将仅限于一台计算机,但这可能是可以接受的。
  • DCOM(仅限Windows,但看起来您仅限于Windows(。
  • 其他一些IPC软件包。

我个人更喜欢插座,但其中任何一个都是合适的。