Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;如何使两个程序进行通信?_C++_Windows_Qt_Communication - Fatal编程技术网

C++ C++;如何使两个程序进行通信?

C++ C++;如何使两个程序进行通信?,c++,windows,qt,communication,C++,Windows,Qt,Communication,问:让两个程序(都在同一台计算机上运行)进行通信和交互的最佳方式是什么?(Windows,C++) 理论情况: 在Windows PC上,我有一个第三方软件,你可以用它来做一些事情(比如打开/编辑/保存文件…这并不重要)。此第三方软件具有可用的C++SDK,因此您可以为其开发插件 < i >我开发了一个单独的独立的 Windows C++程序(最有可能使用Qt)和GUI。此程序与第三方软件在同一台Windows计算机上运行。此程序将充当遥控器或发送器 使用第三方软件的SDK,我为第三方软件开发了

问:让两个程序(都在同一台计算机上运行)进行通信和交互的最佳方式是什么?(Windows,C++)

理论情况:

  • 在Windows PC上,我有一个第三方软件,你可以用它来做一些事情(比如打开/编辑/保存文件…这并不重要)。此第三方软件具有可用的C++SDK,因此您可以为其开发插件

  • < i >我开发了一个单独的<强>独立的 Windows C++程序(最有可能使用Qt)和GUI。此程序与第三方软件在同一台Windows计算机上运行。此程序将充当遥控器或发送器

  • 使用第三方软件的SDK,我为第三方软件开发了一个小小的插件。该程序充当接收器,因此我的Qt GUI可以发送该插件将接收的命令,从而相应地远程控制第三方软件

  • 因此,对于一个基本的例子,我可以按下我的独立GUI上的一个按钮,该按钮将与插件通信,然后该插件将在第三方软件中打开指定的文件

    我基本上在寻找的是开发独立软件,它可以与我为第三方软件开发的插件进行来回通信

    最好的方法是什么?我真的不知道从哪里开始,看什么。是否有普通C++库使这类事情变得容易?

    <>我对C++比较陌生,对QT非常陌生,请尽量详细说明。请不要只是说“使用共享内存”之类的话,因为我不知道你到底在说什么

    这个程序不会在单独的计算机上运行,所以我认为这里不需要网络设备

    我在想的一些问题:

  • 如果用户同时打开多个第三方软件副本,该怎么办。我的独立软件如何知道与哪个软件通信

  • 如果我已经运行了我的独立软件并打开了第三方软件,插件是否必须注册或找到我的独立软件才能与之通信

  • 如果我已经有第三方软件运行,然后打开我的独立软件,它是否必须扫描插件,看看它是否正在运行或如何找到它


  • 任何帮助都将不胜感激。我已经在这个问题上做了一个搜索,但是没有特别地发现C++的许多问题,而且大多数都没有很多答案或者不是很清楚,或者没有特别提到与第三方程序的插件的软件通信。它将独立软件和插件分离,因此,只要通信协议匹配,您就可以轻松地将插件连接到任何数量的其他实用程序或脚本中

    因此,我可能会开发一个插件来充当服务器,接收命令并用状态进行响应(嘿,如果你真的想,你甚至可以遵循HTTP标准;)

    如果您想进行跨机器通信,它是免费的:)


    当然,根据软件和使用情况,我会加密通信。

    有很多解决方案,有很多优点和缺点。你必须阅读每一篇文章,找出最适合你的。没有一个解决方案对每个人都是最好的


    这里是一个很好的起点

    我想使用套接字在远程控制应用程序和服务器应用程序之间建立通信


    在这里搜索这些关键字,你会发现很多信息,所以:,。

    如果你使用的是Qt,我相信它有插件的概念:

    否则,COM工作正常。使用C++,我将使用ATL库,但在Qt.

    中也有COM支持。
    如果你想更低级,我会使用套接字或命名管道(因为你使用的是Windows)

    @Jakobud-你的问题很长,因此我产生了误解。如果两个程序之间的关系是结构化和丰富的(比如使用对象模型),我会使用COM。如果很简单(又名:读/写数据场景),我会使用命名管道或套接字。