Соединитель Python привязывается к любому IP-адресу?
У меня есть небольшой односторонний отправитель сообщений, который работает, пока я указываю ip для подключения к коду, однако у меня возникают проблемы, позволяющие соке принимать соединения с любого IP-адреса. Вот проблема, которая является проблемой.
mySocket = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
mySocket.bind ( ( '', 2727 ) )
"Это для локального хоста, и он работает, если я вручную вводим ip, например 192.168.1.106, однако, как я могу оставить его открытым для всех? или я использую для этого неправильный тип соединения?
Ответы
Ответ 1
Если вы хотите привязываться ко всем доступным адресам IPv4, укажите 0.0.0.0
как ваш IP-адрес. Если вы находитесь за маршрутизатором и хотите, чтобы ваш сокет был доступен через Интернет, а не просто в вашей локальной сети, вам нужно настроить правило переадресации портов, чтобы пользователи вне вашей локальной сети могли получить доступ к службе.
Для получения дополнительной информации о 0.0.0.0
см. следующий вопрос ServerFault: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1
Ответ 2
Связывание с ''
имеет тот же эффект, что и для '0.0.0.0'
, облегчает переход на IPv6.
В зависимости от ОС, открытие сокета socket.AF_INET6
прослушивает IPv4 и IPv6.
Ответ 3
Связывание с 0.0.0.0 позволит ему принимать соединения с любого адреса IPv4, который может маршрутизировать его.