在两个 RaspberryPis 之间使用 Python xmlrpc 给出连接被拒绝的错误
Using Python xmlrpc between two RaspberryPis gives connection refused error
我正在尝试使用 Python3 xmlrpc 将一个 RaspberryPi 设置为服务器,将另一个设置为客户端。网上有很多例子,大部分都是相同的。 相关的服务器代码片段是:
from xmlrpc.server import SimpleXMLRPCServer
server = SimpleXMLRPCServer(("localhost", 6789))
server.serve_forever()
客户端代码为:
import xmlrpc.client
proxy = xmlrpc.client.ServerProxy("http://localhost:6789")
这对我来说很好,运行 在一个 Pi 上的两个独立终端 windows 中。但是,运行 第二个 Pi 上的客户端代码 returns 出现连接拒绝错误。
import xmlrpc.client
proxy = xmlrpc.client.ServerProxy("http://192.168.1.19:6789")
我可以从客户端成功ping通服务器。
我怀疑我可能误解了它的工作原理。所有在线示例都是 运行 同一台机器上的客户端和服务器,除了 'localhost'.
之外没有引用任何内容我错过了什么?
好的,我找到了答案。对于遇到同样问题来到这里的任何人,这就是我所学到的。
服务器代码中的'localhost'表示只监听本机的连接。将其更改为“0.0.0.0”意味着监听“本地计算机上的所有 IPv4 地址”- 维基百科。所以我进行了更改并且成功了。
不过我也做了一些测试。如图所示,我的服务器Pi在192.168.1.19,但是改变客户端代码调用到192.168.1.100连接也是一样的。也许“0.0.0.0”仅表示所有 IPv4 地址,但我不希望服务器代码响应每个网络调用而启动。将服务器代码从“0.0.0.0”更改为其实际地址“192.168.1.19”,使其忽略所有其他地址。在我的世界里,我不太可能拥有一台具有多个 IP 地址的机器。