Онлайн Python розетки - PullRequest
       6

Онлайн Python розетки

0 голосов
/ 11 апреля 2020

Я пытаюсь создать простое приложение в Python с сокетами, но клиенты получают сообщение «Тест», отправленное с сервера, только если они находятся в локальной сети. Я попытался запустить клиент (сервер работает на моем P C) с моего ноутбука и с моего P C. В обоих случаях я получил сообщение «Тест», но когда друг пытается подключиться, он не получает сообщение.

Вот мой server.py:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 7908))
s.listen(5)

while True:
    clientsocket, address = s.accept()
    print(f"Connection from {address} established")
    clientsocket.send(bytes("Test", "utf-8"))

А здесь мой client.py:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("my_public_ip_address", 7908))

print(s.recv(8).decode("utf-8"))

Я компилирую client.py с помощью pyinstaller перед отправкой, чтобы скрипт мог работать без установки Python на машине (у меня даже * 1019 нет * на моем ноутбуке)

Спасибо, что нашли время, чтобы прочитать и заметить это :) (Извините, если мой английский sh плох, я француз)

1 Ответ

0 голосов
/ 11 апреля 2020

Я полагаю, ваш друг находится за пределами вашей локальной сети: если это так, вы должны открыть / перенаправить порт 7908 на маршрутизаторе с сервером. Откройте порт 7908 на брандмауэре сервера P C.

Ваш скрипт таким образом должен работать.

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