使用 C++ 在同一系统上 2 个服务 运行 之间的通信
Communication between 2 Services running on same system using C++
在 C++ 中,我有 2 个服务(比如 windows 服务)在系统上 运行。显然两者都有对应的EXE A.EXe & B.EXE。
如果我想在这 2 个 windows 服务之间查询和接收一些数据,是否可以通过从 1 个服务传递结构指针来作为函数调用来完成,并让其他服务使用以下方法填充结构指针过去了。
A 和 B 的通用头文件:
struct Abc
{
int a;
}
现在假设服务 A 通过其指针发送此结构对象,或通过调用服务 B.EXE 中的函数按引用传递。此函数调用是否可以跨 2 个服务工作?数据可以通过这种方式在 A 和 B 之间传输吗?
或者我需要像套接字这样的 IPC 机制。
Whats the best way for achieving the data transfer between 2 services
running on same system
IPC 代表 "inter process communication"。您有两个服务(每个服务 运行 在自己的进程中)并且您希望在它们之间进行通信。您绝对 需要 IPC 机制。
您的选择是:
- 套接字(在顶部分层
boos::asio
是个好主意)
- 共享内存映射和信号事件(不要忘记使用互斥锁或类似的东西,不要忘记建立锁层次结构,以免发生死锁)。这将仅限于一台机器,但这可能是可以接受的。
- DCOM(仅限 Windows,但看起来您无论如何都仅限于 Windows)。
- 其他一些IPC包。
我个人的偏好是套接字,但任何一个都合适。
在 C++ 中,我有 2 个服务(比如 windows 服务)在系统上 运行。显然两者都有对应的EXE A.EXe & B.EXE。
如果我想在这 2 个 windows 服务之间查询和接收一些数据,是否可以通过从 1 个服务传递结构指针来作为函数调用来完成,并让其他服务使用以下方法填充结构指针过去了。
A 和 B 的通用头文件:
struct Abc
{
int a;
}
现在假设服务 A 通过其指针发送此结构对象,或通过调用服务 B.EXE 中的函数按引用传递。此函数调用是否可以跨 2 个服务工作?数据可以通过这种方式在 A 和 B 之间传输吗?
或者我需要像套接字这样的 IPC 机制。
Whats the best way for achieving the data transfer between 2 services running on same system
IPC 代表 "inter process communication"。您有两个服务(每个服务 运行 在自己的进程中)并且您希望在它们之间进行通信。您绝对 需要 IPC 机制。
您的选择是:
- 套接字(在顶部分层
boos::asio
是个好主意) - 共享内存映射和信号事件(不要忘记使用互斥锁或类似的东西,不要忘记建立锁层次结构,以免发生死锁)。这将仅限于一台机器,但这可能是可以接受的。
- DCOM(仅限 Windows,但看起来您无论如何都仅限于 Windows)。
- 其他一些IPC包。
我个人的偏好是套接字,但任何一个都合适。