python получение данных от друга - PullRequest
1 голос
/ 13 марта 2020

Я новичок во всем этом шазам и немного растерялся. Я хочу, чтобы сервер получал данные на моем компьютере, а друг отправлял данные на свой компьютер. Код для моего сервера выглядит следующим образом:

import socket

HOST = 'HOST' 
PORT = PORT    

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    conn, addr = s.accept()
    with conn:
        print('Connected by', addr)
        while True:
            data = conn.recv(1024)
            if not data:
                break
            conn.sendall(data)

Я удалил IP-адрес хоста и порт, но я не совсем уверен, какой из них я должен использовать для обоих tbh. Код клиента выглядит следующим образом:

import socket

HOST = 'HOST' 
PORT = PORT   

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    s.sendall(b'Hello, world')
    data = s.recv(1024)

print('Received', repr(data))

Поэтому мой сервер получает его только тогда, когда я запускаю клиент, а не моего друга. У меня вопрос, какие IP и порты я должен использовать? Где я могу найти эти цифры? Почему это работает только когда я запускаю клиент и как я могу это исправить? И если кто-нибудь может направить меня к некоторым ресурсам об этой теме c, я не знаю, что искать :( Заранее спасибо!

1 Ответ

0 голосов
/ 14 марта 2020

Сервер должен связываться с IP-адресом любого интерфейса, на который он ожидает получение трафика c. Если он может получить трафик c на нескольких интерфейсах, вы можете привязать к 0.0.0.0, что означает «все интерфейсы». Какой бы IP-адрес вы ни выбрали, вам следует установить значение HOST для сервера. Для порта сервера это может быть указанный c порт или любой порт (порт 0). Просто имейте в виду, что клиент должен знать, какой порт прослушивает сервер.

Клиент должен подключиться к IP-адресу или имени хоста и порту вашего сервера, чей адрес общедоступен. Это действительно зависит от настроек сети.

Я предлагаю подключить клиента к той же сети, что и ваш сервер, и повторить попытку. Если это не работает, убедитесь, что ваш сервер прослушивает 0.0.0.0.

Если вы находитесь в разных сетях, эти сети должны быть каким-то образом соединены.

...