Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Sockets 用不同语言编写的应用程序之间的通信 我正在研究将几个应用程序链接在一起(所有的语言都用C语言,C++语言,Python语言编写),我不知道该怎么办。_Sockets_Ipc_Communication Protocol - Fatal编程技术网

Sockets 用不同语言编写的应用程序之间的通信 我正在研究将几个应用程序链接在一起(所有的语言都用C语言,C++语言,Python语言编写),我不知道该怎么办。

Sockets 用不同语言编写的应用程序之间的通信 我正在研究将几个应用程序链接在一起(所有的语言都用C语言,C++语言,Python语言编写),我不知道该怎么办。,sockets,ipc,communication-protocol,Sockets,Ipc,Communication Protocol,我所说的链接是什么意思?我正在使用的系统由每个负责特定处理任务的小程序组成。我需要能够轻松地将数据集从一个应用程序传输到另一个应用程序(所讨论的数据集不是很大,可能只有几兆字节),并且我还需要某种形式的方法来控制操作的当前状态(这是客户机-服务器模型敲响警钟的地方) 看起来sockets或者SOAP可能是一个通用的解决方案,但只是想了解人们对这个问题的看法 如有意见/建议,将不胜感激,谢谢 对于C到C,您可以使用。你也可以用Python和C++来使用它。 您可能还希望签出命名管道。我会考虑转移到

我所说的链接是什么意思?我正在使用的系统由每个负责特定处理任务的小程序组成。我需要能够轻松地将数据集从一个应用程序传输到另一个应用程序(所讨论的数据集不是很大,可能只有几兆字节),并且我还需要某种形式的方法来控制操作的当前状态(这是客户机-服务器模型敲响警钟的地方)

看起来sockets或者SOAP可能是一个通用的解决方案,但只是想了解人们对这个问题的看法

如有意见/建议,将不胜感激,谢谢

对于C到C,您可以使用。你也可以用Python和C++来使用它。
您可能还希望签出命名管道。

我会考虑转移到一个模型,在该模型中,您可以通过使用所有应用程序都可以查看的集中式数据来消除这个问题。可以说“真相的一个来源”。

< P>大多数外部软件与C++代码有冲突,这是因为它使用了名称符号算法。因此,当与用其他语言编写的程序交互时,最好将包装器声明为
extern“C”
extern“C”内部{
block.

我个人喜欢它。它是一个库,有一个类似BSD套接字的接口来传递消息,但你会发现它实现了有趣的任务分发模式

听起来您想在一个管道中安排几个进程。ØMQ允许您使用推送和轮询套接字来实现这一点。(之后,您会发现甚至可以轻松地跨多个进程和机器进行扩展。)请查看入门指南和专门介绍推送和拉送工作原理的手册页

绑定适用于您提到的所有语言

至于消息的内容,ØMQ并不关心这一点,它们只是原始数据块。您可以使用任何适合您的格式,例如JSON,或者

我不确定的是你提到的“控制状态”。例如,你有兴趣中途取消一份工作吗

我需要能够轻松地将数据集从一个应用程序传输到另一个应用程序(所讨论的数据集不是很大,可能只有几兆字节)

使用文件系统

我还需要某种形式的方法来控制操作的当前状态

同样,使用文件系统。带有json序列化对象的“current_state.json”文件非常适合多种语言使用

看起来套接字或者SOAP是一个通用的解决方案


也许吧。但是对于这类事情来说,这太过分了。你的操作系统已经具备了你所需要的所有功能。只需使用文件系统。它非常简单而且非常可靠。

有很多方法可以进行进程间通信。正如你所说,套接字可能是一个通用的解决方案。我认为SOAP有点过分了。你也可以使用mailslots。i几年前使用C++编写了C++应用程序。命名管道也可以是一个解决方案,但是如果你在Windows上编码,可能会很困难。 我认为:

  • 插座
  • 邮箱

  • 是最好的人选。

    感谢您的建议,我当然考虑过文件系统方法,但我认为使用结构化协议(如SOAP)可能会使数据和控制消息更容易组合在一起。“更容易”?如何?在问题中提供一些“更容易”的示例比文件系统更简单。我对可能比普通目录中的普通文件更简单的东西一无所知。也许我遗漏了什么。我同意没有什么比从文件中写入/读取更简单的了,我指的是保持一组连贯的数据/控制消息一起流经系统(结构化协议可能更方便)我想用你建议的方法来保存一个JSON文件来跟踪正在发生的事情,这并不是一个真正的问题。另外一件有趣的事情是使用文件系统和套接字来实现这个系统的性能。我可能需要做一些简单的比较。@哈姆扎:“流经系统的数据/控制消息”。这是什么意思?“我正在处理的系统由每个负责特定处理任务的小程序组成”听起来像普通的操作系统进程管理。为什么有消息“流经系统”“当你有小而简单的程序时。如果可以避免的话,不要过度发明。简单总是更快、更便宜、更易于维护。你的要求似乎很简单。除非你的问题不完整。我想我只是不擅长解释要求,尽管我认为我的观点是正确的,谢谢:)WCF看起来很有趣,尽管我可能需要整合一些其他语言,但这些语言可能不受WCF的支持。谢谢你的建议。不幸的是,这是我无法控制的事情,我同意单一语言的方法会让我的生活更轻松:)不必是单一语言,只需要单一数据。谢谢你的建议,我的看起来很有趣!管道是我正在做的事情,尽管我必须处理将数据分叉到多个子应用程序中并等待它们完成处理,然后才能进入下一阶段,这是我需要某种状态检查的地方。(我猜,这与通过不同进程运行数据的伪并发差不多)每个子应用程序负责将任务推到下一个阶段。一种表示整个管道完成的方法是使用发布子套接字,并让链中的最后一个子应用程序发布通知