связать с INADDR_ANY - PullRequest
       12

связать с INADDR_ANY

8 голосов
/ 30 сентября 2011

Если я связываю сокет с INADDR_ANY, я знаю, что он будет принимать входящие соединения на любом из IP-адресов, настроенных на сервере. Допустим, у меня настроен 1 IP, когда я выполняю вызов bind (), а затем настраивается новый IP. Будет ли bind () принимать подключения, инициированные к вновь настроенному IP-адресу, или он работает только для IP-адресов, которые существовали при вызове bind ()?

Ответы [ 2 ]

11 голосов
/ 30 сентября 2011

В Linux, когда вы связываетесь с INADDR_ANY, сокет остается связанным с 0.0.0.0 и будет принимать соединение с любым локальным IP-адресом, теперь независимо от того, как это меняется. Только когда установлено TCP-соединение, одно соединение связывается с IP-адресом, на котором оно было получено. Другие соединения по-прежнему могут быть получены по любому адресу.

2 голосов
/ 01 октября 2011

Да, он будет принимать соединения на вновь созданные или вновь настроенные интерфейсы.

Вы можете попробовать сами, создав фиктивный интерфейс:

/sbin/ifconfig dummy0 172.17.42.99 netmask 255.255.255.255

Или что-то; затем попытайтесь подключиться к этому IP.

...