Mqtt 连接到端口1883时出错

Mqtt 连接到端口1883时出错,mqtt,Mqtt,我有一个Rpi-a通过3G冲浪棒连接到互联网,Rpi-B通过WiFi热点连接到互联网。Rpi-A有一个公共ip地址,端口1883和8883也开放。这两个树莓皮的是在不同的网络。我正在尝试使用MQTT将二进制数据从Rpi-B发送到Rpi-A 更新:我使用以下代码测试MQTT连接。将XX.XX.XX.XX替换为树莓Pi的公共IP。但我最终还是得到了这个错误--> 错误:[Errno 10060]连接尝试失败,因为已连接 一段时间后,该方未作出适当回应,或 连接失败,因为连接的主机未能响应 这个错误的

我有一个Rpi-a通过3G冲浪棒连接到互联网,Rpi-B通过WiFi热点连接到互联网。Rpi-A有一个公共ip地址,端口1883和8883也开放。这两个树莓皮的是在不同的网络。我正在尝试使用MQTT将二进制数据从Rpi-B发送到Rpi-A

更新:我使用以下代码测试MQTT连接。将XX.XX.XX.XX替换为树莓Pi的公共IP。但我最终还是得到了这个错误-->

错误:[Errno 10060]连接尝试失败,因为已连接 一段时间后,该方未作出适当回应,或 连接失败,因为连接的主机未能响应

这个错误的可能原因是什么?我的代码有什么遗漏吗

import paho.mqtt.client as mqtt
import time

def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))

client = mqtt.Client()
client.on_connect = on_connect

client.connect("xx.xx.xxx.x", 1883, 60)

client.loop_start()

while True:
  time.sleep(2)
  client.publish('Due_0.72/cmd/in','hello')
  print "publish.."

您是否100%确定Rpi-A具有可公开路由的IP地址?大多数蜂窝网络提供商使用大规模NAT,您需要一个特定的计划来获得可路由地址。如果是这样,您是否检查了iptables是否阻止了入站流量?我只是将IP地址放入在线端口检查实用程序中,发现端口已打开。但是我如何检查iptables是否阻止了入站流量?@hardilib我在rpi-A:sudo iptables-L-nv上运行此命令,并且没有入站防火墙阻止您已经仔细检查了代理是否确实在rpi-A上运行?除此之外,没有手可以玩,很难say@hardilib是的,MQTT代理在两个raspberry pi上都运行。您是否100%确定Rpi-A具有可公开路由的IP地址?大多数蜂窝网络提供商使用大规模NAT,您需要一个特定的计划来获得可路由地址。如果是这样,您是否检查了iptables是否阻止了入站流量?我只是将IP地址放入在线端口检查实用程序中,发现端口已打开。但是我如何检查iptables是否阻止了入站流量?@hardilib我在rpi-A:sudo iptables-L-nv上运行此命令,并且没有入站防火墙阻止您已经仔细检查了代理是否确实在rpi-A上运行?除此之外,没有手可以玩,很难say@hardilib是的,MQTT代理在两个raspberry pi上都运行