Pyro4远程连接被阻止

时间:2016-10-20 09:45:44

标签: python networking pyro

我正在使用Pyro4在树莓和电脑之间建立远程连接。我已经在我的计算机上测试了本地代码。但现在我想在树莓上使用它。只有目标机器拒绝它的问题。设置了Nameserver,我可以要求提供元数据,客户端没有给出任何错误。

服务器代码:

interface IHandler<out T> { }

var handlers = new IHandler<string>[]
{
    new Handler<string>(),
    new Handler<object>(),
};

客户代码:

daemon = Pyro4.core.Daemon("192.168.0.199")
Pyro4.config.HOST = "192.168.0.199"
ns = Pyro4.locateNS()
print ns.lookup("client", return_metadata=True) #this works
callback = MainController()
daemon.register(callback)
vc2 = Pyro4.core.Proxy("PYRONAME:client@192.168.0.199:12345")

防火墙也关闭了。

由于

2 个答案:

答案 0 :(得分:1)

主要问题是服务器从不运行守护程序请求循环,因此无法响应请求。

但是如下所示,代码存在很多问题:

  • 不完整。
  • 你正在混淆服务器和客户的责任;为什么客户端运行deamon?这是服务器的工作。
  • 您正在注册一个具有逻辑名称的对象,该逻辑名称似乎是物理名称。这不是名称服务器的工作方式。
  • 您在客户端和服务器上注册内容。
  • 服务器永远不会运行它创建的守护程序的请求循环。
  • 那是什么&#39; vc2&#39;代理在服务器上做什么?客户端应该创建服务器对象的代理。
  • 通常最好在做其他任何事情之前设置Pyro的配置变量,这样你就不必重复使用守护程序所绑定的IP地址。

总而言之,你似乎对Pyro的各种核心概念感到困惑。 更好地理解(您是否已完成本手册的教程章节?)并相应地修改代码可能会解决您的问题。

答案 1 :(得分:0)

好的,获得更多信息

当我从obj_ x @ 0.0.0.0:x编辑我的Pyro4核心URL到obj_ x @ 192.168.0.199:x并手动连接时,我可以连接。所以我想我将地址注册到名称服务器的方式有问题。

我会让你保持联系

汤姆