c++ - 应用程序之间的通信

标签 c++ windows sockets com activex

我有 3 个选择要使用:套接字、activeX、com,以便在一台计算机上的应用程序之间进行通信。哪个更快?

最佳答案

只要它在一台机器上运行,进程间通信就会从根本上受到总线带宽的限制。内存到内存的复制,无论是在 TCP/IP 堆栈、命名管道支持代码还是共享内存中完成。这使得它们都同样高效。

但有一个细节很重要,即传输的数据量和完成工作所需的软件层数。只有当数据量很大时,内存总线带宽才会受到限制。对于像 COM 这样的远程过程调用协议(protocol),情况不一定如此。只有函数调用的参数需要序列化,如果您不传递数组,那可能只有几个字节。现在开销开始变得重要,当您使用像 COM 这样的高级协议(protocol)时,开销是相当大的。

使用套接字的明显缺点是您必须自己编写所有反序列化代码。如果组件的协议(protocol)不简单,则不重要。用工作时间换取方便是典型的选择,只有您能做到。

关于c++ - 应用程序之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5181419/

相关文章:

java - ObjectInputStream.readObject()在socket通信过程中永远挂起

C++ 优雅的方式来标记不属于 vector 的索引

C++ Winsock 2 题

c++ - char* 和 void* 在所有情况下都可以互换用作缓冲区吗? C++

python - 文件编码相同代码Windows、Linux

java - 客户端-服务器套接字 : Not reaching if statement

c++ - vector 中嵌套 vector 的分段故障核心转储

c++ - 如何修复QT中的GL.h编译错误?

c++ - 每次我为我的 C++ 程序提供大量输入集时,我的 DOS 都会崩溃

c - 为什么这个阻塞套接字读取返回零并且没有错误?