Ответ 1
Привязка сокета осуществляется к адресу и порту для получения данных в этом сокете (в большинстве случаев) или для использования этого адреса/порта в качестве источника данных при отправке данных (например, используется с подключениями к данным на FTP-сервере).
Обычно есть несколько интерфейсов на конкретной машине, то есть петля псевдоинтерфейса, где машина может достигнуть себя, Ethernet, WLAN, VPN.... Каждому из этих интерфейсов может быть назначено несколько IP-адресов. Например, loopback обычно имеет 127.0.0.1 и с IPv6 также :: 1, но вы также можете назначать другие. Ethernet или WLAN имеют IP-адреса в локальной сети, т.е. 172.16.0.34 или что-то еще.
Если вы привязываете сокет для получения данных к определенному адресу, вы можете получать только данные, отправленные на этот конкретный IP-адрес. Например, если вы привязываетесь к 127.0.0.1, вы сможете получать данные из вашей собственной системы, но не из какой-либо другой системы в локальной сети, потому что они не могут отправлять данные на вашу 127.0.0.1: для одной любые данные на 127.0. 0.1 будет отправлено на их собственный 127.0.0.1, а во-вторых, ваш 127.0.0.1 - это адрес вашего внутреннего интерфейса обратной связи, который недоступен извне.
Вы также можете привязать сокет к универсальному адресу, например 0.0.0.0 (Ipv4) и :: (Ipv6). В этом случае он не привязан к определенному IP-адресу, но сможет получать данные, отправленные на любой IP-адрес устройства.