通过互联网与树莓派通信

通过互联网与树莓派通信

我是网络新手。

我有一个通过 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)

答案2

在 RPi-B 的网络上必须有一个使用 NAT 的路由器,以便 RPI-B 通过公共地址连接到互联网。

像这样:

在此处输入图片描述

您必须进入该路由器的配置并打开特定端口(例如 22)并将所有传入流量转发到该端口到 RPi-B 的 IP 地址。

RPi-B 将通过以下方式访问公共互联网:民众IP 地址和端口 22。

现在,您可以从 RPi-A 使用安全FTP将数据发送到 RPi-B。

相关内容