在不同计算机上的进程之间进行通信

Posted

技术标签:

【中文标题】在不同计算机上的进程之间进行通信【英文标题】:Communicating between processes on different computers 【发布时间】:2016-06-12 07:41:40 【问题描述】:

我想在进程之间进行通信(一个进程做某事,将结果发送到另一个用它做某事的进程)。 所以我使用了这段代码:

服务器:

from multiprocessing.connection import Listener

address = ('localhost', 6000)     # family is deduced to be 'AF_INET'
listener = Listener(address, authkey='secret password')
conn = listener.accept()
print 'connection accepted from', listener.last_accepted
while True:
    msg = conn.recv()
    # do something with msg
    if msg == 'close':
    conn.close()
    break
listener.close()

客户:

from multiprocessing.connection import Client

address = ('localhost', 6000)
conn = Client(address, authkey='secret password')
conn.send('close')
conn.close()

(来源:interprocess communication in python)

它就像一个魅力。但我想从另一台计算机上运行这两个程序。在比较。 A 我有这两个程序。我通过 Wifi Lan(使用 ssh 连接)从 Comp B 连接到 Comp A 并运行这 2 个程序(这意味着它们在 Comp A 上运行),但它们没有相互连接。我尝试使用 wifi 局域网地址(192.168.xx)而不是“localhost”,但它也没有工作。我必须使用什么参数而不是“localhost”,以便这两个程序可以连接。或者什么是最简单的方法来做到这一点。 干杯!

【问题讨论】:

【参考方案1】:

转到命令提示符并在另一台计算机上键入ipconfig。您需要使用 IPv4 地址。您还需要确保端口已打开并启用了 ssh。将“localhost”替换为 IPv4 地址。

【讨论】:

以上是关于在不同计算机上的进程之间进行通信的主要内容,如果未能解决你的问题,请参考以下文章

Java Socket编程基础

创建一个仅限本地的端口以在同一台计算机上的进程之间进行通信?

套接字通信

IPC 中 LPCRPC 的区别和联系

在单个管理程序虚拟机上的两个不同操作系统上运行的两个进程之间的 IPC

第八节