Python сокет привязать к любому IP? - PullRequest
27 голосов
/ 07 ноября 2011

У меня небольшой односторонний отправитель сообщений, который работает, когда я указываю IP-адрес для подключения в коде, однако у меня возникают проблемы с разрешением сокету принимать подключения с любого IP-адреса.Вот строка, которая является проблемой.

mySocket = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
mySocket.bind ( ( '', 2727 ) )

'' для localhost, и это работает, если я вручную ввожу IP, например, '192.168.1.106', однако, как я могу оставить его открытым для всех?Или я использую для этого неправильный тип соединения?

Ответы [ 3 ]

36 голосов
/ 07 ноября 2011

Если вы хотите привязать все доступные IPv4-адреса, укажите 0.0.0.0 в качестве вашего IP-адреса.Если вы находитесь за маршрутизатором и хотите, чтобы ваша розетка была доступной через Интернет, а не просто доступной в вашей локальной сети, вам нужно настроить правило переадресации портов, чтобы пользователи вне вашей локальной сети могли получить доступ к услуге.

См. Следующий вопрос о ServerFault для получения дополнительной информации о 0.0.0.0: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

12 голосов
/ 07 ноября 2011

Привязка к '' имеет тот же эффект, что и к '0.0.0.0', облегчает переход на IPv6.

В зависимости от ОС, открытие сокета socket.AF_INET6 прослушивает IPv4 и IPv6.

4 голосов
/ 07 ноября 2011

Привязка к 0.0.0.0 позволит ему принимать подключения с любого IPv4-адреса, который может маршрутизировать его.

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