#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-адрес, и поскольку у меня нет доступа к маршрутизатору, я не могу перенаправить внешний:порт на мой внутренний: порт, что я могу тогда сделать?