Python rpyc“socket.error:[Errno 113]无主机路由”

时间:2014-02-26 05:29:53

标签: python sockets rpyc

我有两台机器使用python rpyc,一台是服务器(ip:10.0.3.120),另一台是客户机(ip:10.0.3.197)。 代码如下所示:

服务器(IP:10.0.3.120)

from rpyc import Service
from rpyc.utils.server import ThreadedServer

class TestService(Service):

    def exposed_test(self, num):
        return num + 1

sr = ThreadedServer(TestService, port=9999, auto_register=False)
sr.start()

客户(IP:10.0.3.129)

import rpyc
conn = rpyc.connect('10.0.3.120', 9999)
cResult = conn.root.test(11)
conn.close()

print cResult

当我运行serverclient时,客户端会显示此错误:

Traceback (most recent call last):
File "rpyc_client.py", line 4, in <module>
conn = rpyc.connect('10.0.3.120', 9999)
File "/usr/local/lib/python2.7/site-packages/rpyc-3.2.3-py2.7.egg/rpyc/utils/factory.py", line 89, in connect
s = SocketStream.connect(host, port, ipv6 = ipv6)
File "/usr/local/lib/python2.7/site-packages/rpyc-3.2.3-py2.7.egg/rpyc/core/stream.py", line 114, in connect
return cls(cls._connect(host, port, **kwargs))
File "/usr/local/lib/python2.7/site-packages/rpyc-3.2.3-py2.7.egg/rpyc/core/stream.py", line 92, in _connect
s.connect((host, port))
File "/usr/local/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)

connect方法如何使用? 如果我使用公共网络IP来构建rpyc服务器,我可以在家连接吗?非常感谢!

2 个答案:

答案 0 :(得分:1)

首先,检查连接命令ping。在您的代码服务器中运行localhost。为了能够从正确的地址外部访问它或*(然后服务器将在当前机器的所有可能地址上运行)。我认为auto_register必须等于None。

from rpyc import Service
from rpyc.utils.server import ThreadedServer

class TestService(Service):

    def exposed_test(self, num):
        return num + 1

sr = ThreadedServer(TestService, hostname='10.0.3.120', port=9999, auto_register=None)
# or sr = ThreadedServer(TestService, hostname='*', port=9999, auto_register=None)
sr.start()

答案 1 :(得分:1)

使用以下命令删除客户端上的所有iptables规则:

iptables -F