Node.js 如何与 C++ 程序进行通信?

16

假设我有一个在Linux服务器上运行的C++程序和一个Node.js Web应用程序,它们运行在同一台服务器上。

C++程序维护了一个队列,而我想要使用Node.js将一些数据推送到该队列中。

那么,最好的方法是什么?是使用sockets还是IPC(进程间通信)?


我们在嵌入式系统中使用dbus来实现C++和Node.js之间的通信。DBUS是Linux系统上的默认总线。 - Frank Roth
3个回答

13
如果您正在使用Linux,我建议使用UNIX域套接字。它们基本上使用BSD套接字接口为您提供IPC的高性能,使得如果您需要将C++(或node.js)应用程序移动到另一台计算机上,很容易切换到TCP套接字。
它们已经被node.js支持, 只需要更改打开套接字的代码即可。许多应用程序,包括MySQL,在配置文件中轻松地进行抽象处理。

2

我会使用套接字,它们清晰易懂且易于使用。


但实际上它们都在同一台服务器上,我在想套接字可能比IPC的速度慢,我是对的吗? - NamiW
@luke14free:这取决于情况。Unix套接字可能比普通的TCP套接字更快。 - André Caron
@AndréCaron ICP代表进程间通信协议,而不是TCP ;) - luke14free
2
@luke14free:谷歌没有听说过ICP“进程间通信协议”。我想你是指IPC = 进程间通信。由于OP指定Linux是操作系统,最好的平台特定IPC可能会被node.js支持是Unix域套接字,这些套接字可能会比TCP套接字提供更好的性能。 - André Caron
这是完全错误的。向进程发送信号比套接字通信要快得多。 - luke14free
显示剩余3条评论

2
如果你想使用IPC机制,可以考虑编写一个Node.js C++模块,然后使用Boost.Interprocess库中的内容与其他应用程序进行通信。
Boost.Interprocess已经构建了用于共享标准库容器的机制。如果将来需要跨平台,该库也支持跨平台。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接