... получить локальный внутренний IP-адрес, назначенный маршрутизатором ...
Обратите внимание, что в некоторых случаях IP-адрес устройства будет назначаться вручную, но пользователь все равно захочет использовать UPnP.
В Linux предлагается использовать getaddrinfo(3)
вместо gethostbyname(3)
, возможно, Winsocks осуществила аналогичный переход?
В Linux для /etc/hosts
характерно наличие петлевых записей, также доступных по имени хоста; /etc/gai.conf
может использоваться для настройки порядка сортировки возвращаемых адресов, и, возможно, будет возвращен адрес обратной связи. Winsock позволяет системным администраторам легко изменять порядок возвращаемых адресов?
Не забывайте, что система может на законных основаниях иметь несколько вышестоящих маршрутизаторов: ноутбук с EV-DO или EDGE или аналогичное сотовое соединение для передачи данных и беспроводной или проводной Ethernet будет иметь несколько IP-адресов, несколько восходящих маршрутизаторы и таблица маршрутизации, чтобы выяснить, какой из них следует использовать для отправки каждого пакета.
Можете ли вы использовать (а) адрес, используемый клиентами для связи с вами? (getsockname(2)
вернет локальный адрес, используемый в конкретном сокете.) (B) попросить пользователя выбрать среди списка IP-адресов, если их несколько? Было бы неплохо привязать к N из M интерфейсов, чтобы пользователи могли выбирать, какие сети получают услуги, а какие нет.