Подключитесь к серверу, используя общедоступный IPv4-адрес на python

#python #sockets #server #ip #client

Вопрос:

Я экспериментирую со связью сокет-сервер-клиент, используя модуль сокета python 3. Просто чтобы проверить, можно ли установить возможное соединение, я попытался запрограммировать самый простой из возможных сценариев. Таким образом, код сервера предназначен только для печати новых подключений; его код:

 import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("0.0.0.0", 30000))

while True:
    server.listen()
    print("listening...")
    conn, addr = server.accept()

    print(f"{addr} connected")
 

в то время как клиент пытается подключиться к серверу только с помощью общедоступного IPv4-адреса моего компьютера:

 import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Trying to connect...")
client.connect(("99.99.99.99", 30000))
client.close()
 

Когда я пытаюсь запустить сервер, а затем клиент, ничего не происходит: сервер просто ждет соединений, в то время как клиент ничего не отображает. Через некоторое время на стороне клиента отображается ошибка тайм-аута сокета. Я пытался установить соединение даже при запуске сервера и клиента на одном компьютере, я пытался изменить ip-адрес сервера на «localhost» или «127.0.0.1», но ничего не происходит. У вас есть какие-либо идеи о том, как можно решить эту проблему?

P.S. Заранее благодарю вас за возможные ответы и прошу прощения за мой плохой английский, я все еще практикуюсь в нем!

Комментарии:

1. используйте локальный ip-адрес (обычно начинается с 192.168... , по крайней мере, в Windows используйте ipconfig для его получения командную строку), запустите сервер по этому адресу и подключитесь к тому же адресу

2. Да, в этом случае это работает, но моя цель-удаленно подключить два устройства, которые также не могут принадлежать к одной и той же сети Wi-Fi. Возможно ли использовать общедоступный ip-адрес?

3. да, возможно, вам, вероятно, нужно включить переадресацию портов, где-то в настройках маршрутизатора, это также может стоить интернет-провайдеру или использовать какой-либо облачный сервис, например pythonanywhere.com

4. о, понял, спасибо, что уделили мне время!