![通过互联网与树莓派通信](https://linux22.com/image/1542195/%E9%80%9A%E8%BF%87%E4%BA%92%E8%81%94%E7%BD%91%E4%B8%8E%E6%A0%91%E8%8E%93%E6%B4%BE%E9%80%9A%E4%BF%A1.png)
我是网络新手。
我有一个通过 3G surf-stick 连接到互联网的 Rpi-A,以及通过 WiFi 热点连接到互联网的 Rpi-B。
我注意到 Rpi-A 有一个公共 IP 地址,而 Rpi-B 有一个本地/私有 IP。两个 Raspberry Pi 位于不同的网络上。
我想将二进制数据从 Rpi-A 发送到 Rpi-B。关于如何实现这一点,有什么建议吗?
更新:我使用以下代码测试 MQTT 连接。将 XX.XX.XX.XX 替换为 raspberry 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.."
答案1
如果您在不受您控制的热点上运行 RPi B。您可以创建从 Pi B 到 Pi A 的反向连接(ncat 之类的东西应该可以工作)并以此方式发送数据,或者使用云中的 OpenVPN 服务器之类的东西并在 2 个 Pi 之间进行路由。
如果您有权访问 Wi-Fi 热点配置端口,请将 ssh 之类的东西转发到 Pi B。(如果使用标准配置,则通用端口 22/tcp)