【问题标题】:Resources for setting up socket communication on separate Linux machines , C++在不同的 Linux 机器上设置套接字通信的资源,C++
【发布时间】:2026-01-23 11:05:01
【问题描述】:

我会先说我对 Linux 和 C 语言都很陌生...所以请耐心等待。

我还要说,我问了几个我认为对这个主题很了解的朋友,但他们也表示困惑......

我的任务是尝试在 Linux 机器系统上实现套接字通信。目前,有一台主机使用两个英特尔至强融核协处理器来增加计算能力。这些协处理器中的每一个实际上都有自己的 Linux 内核,我正在尝试访问它们,以便我可以控制主机的自动负载平衡机制。基本上,最终目标是控制哪些进程由哪个协处理器处理。

希望定期(每隔几秒或更短)对繁重的数据集进行一些相当广泛的计算。需要吸收数十万个数据点,并使用各种不同的参数和数据分割进行贝叶斯均值回归。

话虽如此,可靠性是必须具备的......并且被委派的每个流程都将相当大(而不是强制执行简单而快速的任务)。

我希望你们都可以就可能有用的(最好是免费的、在线的)资源提出建议。任何建议将不胜感激。

谢谢,

詹姆斯·埃尔莫

【问题讨论】:

    标签: linux parallel-processing local-network


    【解决方案1】:

    您可能想在下面的链接中查看 tcpclient 和 tcpserver。基本上,这些处理所有套接字和网络,您可以专注于程序的核心逻辑。然后,您只需在 tcpclient 下运行您的客户端程序。这将打开与服务器的连接。程序标准输出的输出将通过管道传输到套接字并发送到服务器,而进入套接字的输入将通过管道传输到程序的标准输入。同样,您将在 tcpserver 下运行您的服务器程序。这将在端口上侦听传入连接。建立连接后,套接字的输入将通过管道传输到程序的标准输入,而标准输出的程序输出将通过套接字输出。看: http://cr.yp.to/ucspi-tcp/tcpclient.html http://cr.yp.to/ucspi-tcp/tcpserver.html

    【讨论】:

      【解决方案2】:

      您还可以考虑构建一些Web services(这可能需要有C++ HTTP 服务器库,如OnionPocoWt 的网络部分,以及C++ HTTP 客户端库,例如libcurl )。

      您也可以考虑使用 Message Passing Interface(又名 MPI)。

      当然,您可以查看XMLRPCSOAPJSONRPCASN1Corbalibs11nONC(又名 RPC-XDR)和 serialization 和 @一般为 987654335@ 和 message passing

      您可以使用共享内存或线程。详细了解pthreadsNUMAinter-process communication 等。

      Cloud computing 也可能是相关的,例如openstack

      专业的数据并行语言(如OpenCL)也可能是相关的!还可以查看OpenMPPar4AllPips4u

      也许使用 MELT 自定义 GCC 编译器也可能是相关的!

      你的问题有点太宽泛了。您应该解释您询问的是哪个并行计算领域。延迟、带宽、数据大小、可靠性等非常重要。

      【讨论】:

      • 绝对是数据大小和可靠性。希望每隔几秒输入一次计算数百万个数据点。
      • 请编辑您的问题以改进它!详细说明您考虑的并行计算类型!具体点,解释一下领域....
      • 我添加了更多信息。你认为这足够具体吗?考虑到这是一个公司项目,我不愿透露太多。
      • 这绝对有帮助。但是我无法为您提供更多指导(我是编译器和符号人工智能专家,根本不是数值处理专家)。如果您的领域与蒙特卡洛技术相关,那么消息传递肯定是相关的......