【问题标题】:Wrapper Interface for Cross Platform IPC跨平台 IPC 的封装接口
【发布时间】:2020-07-30 13:00:58
【问题描述】:

我是 IPC 的新手。 我想在我的项目中使用不同的 IPC 机制。根据性能和要求,我需要将 IPC 机制更改为消息队列/共享内存或套接字。

即使 IPC 机制在内部发生变化,我也想使用通用 API 来发送、接收和初始化 IPC。

C++ 中是否有任何可用的开源包装库或通用接口?还是我需要开发自己的 API 来定义它?如果有任何可用的接口,我想参考一下。

我在下面寻找类似的东西

  1. init(参数);
  2. 发送(参数);
  3. 接收(参数);

还有更多

提前致谢

【问题讨论】:

标签: c++ interface ipc wrapper


【解决方案1】:

有许多用于 IPC 的 C++ 库(在 SO 上要求库是 off-topic)。我正在与

他们对我来说还不错。 C++ 没有“统一的 IPC 接口”之类的东西,您必须准确地考虑您需要什么,并根据您的需要设计接口。我通常使用类似于以下界面的东西:

class AbstractIPC
{
public:
  virtual ~AbstractIPC() = default;
  virtual bool open() = 0;
  virtual bool close() = 0;
  virtual int send(const uint8_t* data, size_t, length) = 0;
  virtual int receive(uint8_t* data, size_t, length) = 0;
};

不使用std::vector<uint8_t>std::string 的原因是与其他组件的兼容性,可能是用C 编写的。

不是非常精确的答案,但我希望它能让您了解从哪里开始。

【讨论】:

  • 谢谢!。是否可以在一端使用 boost 消息队列,而在另一端使用 posix 消息队列。为什么我问这个愚蠢的问题是我不确定发送方进程是使用 boost 消息队列还是 posix 消息队列来发送数据。 boost消息队列与posix消息队列兼容吗?
猜你喜欢
  • 2010-09-20
  • 2010-09-08
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 2011-10-18
  • 2012-05-21
  • 1970-01-01
相关资源
最近更新 更多