【问题标题】:Nodejs communicate with C++ program?Nodejs与C++程序通信?
【发布时间】:2012-04-08 05:58:22
【问题描述】:

假设我有一个 c++ 程序在与 Node.js Web 应用程序相同的服务器上运行,在 linux 服务器上。

c++程序维护了一个队列,我想用Node.js做的是,将一些数据推送到队列中。

最好的方法是什么?

哪个更好?套接字还是IPC?

【问题讨论】:

  • 我们使用dbus 在嵌入式系统上的 C++ 和 nodejs 之间进行通信。 DBUS 是 linux 系统上的默认总线。

标签: javascript c++ linux node.js


【解决方案1】:

如果您使用的是 Linux,我建议您使用UNIX-domain sockets。它们基本上为您提供了使用 BSD 套接字接口的高性能 IPC,如果您需要将 C++(或 node.js)应用程序移动到另一台计算机,则可以轻松切换到 TCP 套接字。

它们是already supported by node.js,只有打开套接字的代码需要更改。包括 MySQL 在内的许多应用程序很容易将其抽象到配置文件中。

【讨论】:

    【解决方案2】:

    我会使用插座,它们干净且易于使用

    【讨论】:

    • 但实际上它们在同一台服务器上,我想知道套接字可能比 IPC 慢,对吗?
    • 它肯定会更慢,但如果有一天两者不再驻留在同一台服务器上,它会让您的应用程序准备好进行扩展。
    • @luke14free:这取决于。 Unix 套接字可能比常规 TCP 套接字更快。
    • @AndréCaron ICP = 进程间通信协议不是 TCP ;)
    • @luke14free:Google 还没有听说过 ICP“进程间通信协议”。我想你的意思是IPC = Inter-Process Communication。由于 OP 指定 Linux 是操作系统,node.js 可能支持的最佳特定平台 IPC 是Unix-domain sockets,它可能提供比 TCP 套接字更好的性能。
    【解决方案3】:

    如果您想使用 IPC 机制,您可以考虑编写 Node.js C++ module,然后使用 Boost.Interprocess 库中的内容与您的其他应用程序通信。

    Boost.Interprocess 已经构建了用于从标准库共享容器的机制。如果你想在未来开放它,它也是跨平台的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-25
      • 2016-03-22
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 2012-11-28
      相关资源
      最近更新 更多