Python: подключение с использованием сокетов через внешний IP

#python #sockets #networking

#python #сокеты #сеть

Вопрос:

Сегодня я создал свою самую первую программу сокетов — я создал клиент и сервер, которые обмениваются сообщениями друг с другом (что-то вроде чата) с помощью сокетов. При использовании внутреннего IP-адреса в качестве «хоста» соединение устанавливается, в противном случае при использовании внешнего IP-адреса соединение не устанавливается.

Редактировать 1:

 #Client 
s = socket.socket()
host = '123.123.123.123'
port = 9999
s.connect((host, port))

#Server
host = ''
port = 9999
s = socket.socket()
s.bind((host, port))
s.listen(5)
connection, address = s.accept()
  

Как это будет правильно работать, например, с ноутбуком? Поскольку ваш IP меняется каждый раз, когда вы переключаете Wifi, как я смогу создать программу, которая будет постоянно работать с этим конкретным ноутбуком?

Я понимаю, что мне нужно перенаправить конкретный порт на определенный внутренний компьютер, например 192.168.0.5. но что, если я использую ноутбук, и у меня нет доступа к маршрутизатору WIFI. У меня не было бы доступа к каждому маршрутизатору, который использует ноутбук.

Я хочу, чтобы код был постоянно совместим.

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

1. «Это не сработало должным образом» очень расплывчато. Похоже, здесь есть несколько вопросов, первый из которых потенциально является хорошим вопросом. Опубликуйте код, который вы используете, и точно укажите, что вы ожидаете от него, и что произойдет вместо этого. Другие вопросы слишком широки для этого формата.

2. Обновлен поток, добавлена важная часть кода, а также лучшее объяснение

Ответ №1:

Используйте DynDNS.com или NoIP.com портал. Вы устанавливаете программу на ноутбуке, которая часто проверяет ваш IP-адрес и отправляет текущий IP на портал, который присваивает этот IP вашему адресу, например «my_laptop.noip.com «. Затем люди могут получить доступ к вашему ноутбуку с помощью «my_laptop.noip.com » вместо IP-адреса.

Вы всегда назначаете сокет IP локальной сетевой карты (NIC), например WiFi. Вы не можете подключиться к внешнему IP. Вы должны настроить свой маршрутизатор так, чтобы запросы на внешний IP: порт отправлялись на ваш локальный IP: порт. Конечно, маршрутизаторы интернет-провайдера могут заблокировать ваши порты, и это не сработает.

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

1. Даже если у меня есть IP-адрес ноутбука в качестве NoIP, он все равно перенаправляется на мой внешний IP-адрес, и поскольку у меня нет доступа к маршрутизатору, я не могу перенаправить внешний:порт на мой внутренний: порт, что я могу тогда сделать?