Как отправить данные между двумя Raspberry Pis в двух разных домах, используя TCP - PullRequest
0 голосов
/ 28 ноября 2018

Итак, я пытаюсь выяснить, как передавать строковые данные между двумя единицами Pi Zero W.Я хочу, чтобы один из них был со мной, а один - с одним из моих друзей в ее доме.Я действительно не понимаю, как это будет работать.Я нашел немного кода, который, казалось, работал для обоих устройств в моем доме, но после изменения IP-адреса на общедоступный IP-адрес моей подруги и попытки использовать его в ее доме ничего не получилось.Я довольно новичок в использовании интернет-протоколов, поэтому любая помощь будет оценена.

Send.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()

Receive.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 Ответ

0 голосов
/ 28 ноября 2018

, если вы хотите соединить их вместе:

  1. Для RPI, который прослушивает входящие соединения TCP (Receive.py), должен быть открыт порт брандмауэра на RPI (https://raspberrypi.stackexchange.com/questions/69123/how-to-open-a-port)
  2. на домашнем маршрутизаторе должен быть открыт порт, который соединяет ваш RPI с провайдером
  3. ваш RPI не может находиться за сетью NAT провайдера - иногда вы можете приобрести статический IP-адрес у вашего провайдера, который не меняетсяили хотя бы общедоступный IP-адрес, который динамически изменяется во времени.

Вы можете проверить, находитесь ли вы за NAT на странице администрирования маршрутизатора, проверьте, совпадает ли IP-адрес, назначенный маршрутизатором от интернет-провайдера, с вашим.IP-адрес, который видят серверы в Интернете. Сделайте этот запрос:

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

Если они совпадают, вы не находитесь за NAT провайдера, и проблема, вероятно, нетам.Если они разные, вы делитесь IP-адресами с другими клиентами интернет-провайдера и не можете запустить свое собственное серверное приложение, которое предоставит его порт Интернету.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...