Мне нужно знать мой фактический локальный IP-адрес (т.е. не loopback-адрес) из приложения Windows 8 WinRT/Metro. Мне нужно несколько причин. Самое простое, что в пользовательском интерфейсе приложения я хотел бы показать некоторый текст, например: "IP-адрес вашей локальной сети: [IP queried from code]".
Мы также используем адрес для некоторых дополнительных сетевых комм. Эти коммиты совершенно верны, потому что все это работает, если я смотрю на IP-адрес в панели управления, а затем жестко программирую его в приложении. Попросив пользователя в диалоговом окне взглянуть на адрес и ввести его вручную, я действительно хочу этого избежать.
Я бы подумал, что не будет сложной задачей получить адрес программным путем, но мои поисковые системы и навыки StackOverflow опустятся.
В этот момент я начинаю рассматривать выполнение цикла UDP broadcast/listen, чтобы услышать мой собственный запрос и извлечь из него адрес, но это действительно похоже на hackey kludge. Есть ли API где-нибудь в новом материале WinRT, который доставит меня туда?
Обратите внимание, что я сказал "Приложение WinRT. Это означает, что типичные механизмы, такие как Dns.GetHostEntry
или NetworkInterface.GetAllInterfaces()
, не будут работать.