gpt4 book ai didi

python - 如何使用 TCP 在两个独立房屋中的两个 Raspberry Pi 之间发送数据

转载 作者:可可西里 更新时间:2023-11-01 02:50:08 26 4
gpt4 key购买 nike

所以我想弄清楚如何在两个 Pi 零 W 单元之间发送字符串数据。我希望其中一个和我在一起,其中一个和我的一个 friend 在她家里。我真的很困惑这将如何工作。我发现了一些似乎适用于我家两个单元的代码,但是在将 IP 地址更改为我 friend 的公共(public) IP 并尝试在她家使用它之后,没有任何结果。我对使用 Internet 协议(protocol)还很陌生,因此我们将不胜感激。

发送.py

import sys
from socket import socket, AF_INET, SOCK_DGRAM

SERVER_IP = ''
PORT_NUMBER = 5000
SIZE = 1024
print ("Test client sending packets to IP {0}, via port
{1}\n".format(SERVER_IP,
PORT_NUMBER))

mySocket = socket( AF_INET, SOCK_DGRAM )

while True:
myMessage = input()
mySocket.sendto(myMessage.encode('utf-8'),(SERVER_IP,PORT_NUMBER))
sys.exit()

接收.py

#!/usr/bin/env python3

from socket import socket, gethostbyname, AF_INET, SOCK_DGRAM
import sys
PORT_NUMBER = 5000
SIZE = 128

hostName = gethostbyname( '0.0.0.0' )

mySocket = socket( AF_INET, SOCK_DGRAM )
mySocket.bind( (hostName, PORT_NUMBER) )

print ("Test server listening on port {0}\n".format(PORT_NUMBER))

while True:
(data,addr) = mySocket.recvfrom(SIZE)
print(data.decode('utf-8'))
sys.exit()

最佳答案

如果你想将它们连接在一起:

  1. 监听传入 TCP 连接 (Receive.py) 的 RPI 必须在 RPI (https://raspberrypi.stackexchange.com/questions/69123/how-to-open-a-port) 上打开防火墙端口
  2. 必须在您的家庭路由器上打开将您的 RPI 连接到 ISP 的端口
  3. 您的 RPI 不能落后于提供商的 NAT 网络 - 有时,您可以从您的提供商那里购买一个静态 IP 地址,该地址不会改变,或者至少是动态变化的公共(public) IP 地址。

您可以在路由器管理页面检查您是否落后于 NAT,检查路由器从 ISP 分配的 IP 是否与 Internet 服务器看到的 IP 地址相同。执行此查询:

https://www.google.com/search?q=what+is+my+ip+address )

如果它们相同,则说明您不在 ISP 的 NAT 后面,问题可能不存在。如果不同,您将与其他 ISP 的客户共享 IP,并且您无法运行自己的服务器应用程序,这会将其端口暴露给互联网。

关于python - 如何使用 TCP 在两个独立房屋中的两个 Raspberry Pi 之间发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53509671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com