我需要知道运行我的应用的设备的公共IP地址。该应用程序是Windows Store WinRT / Metro应用程序。
使用:NetworkInformation.GetInternetConnectionProfile和NetworkInformation.GetHostNames我能够检索本地IP地址而不是公共。
最后,我找到了http://freegeoip.net/xml/这是一个公共REST API,用于搜索IP地址和主机名的地理位置。但这不是一个可行的解决方案,我想知道我是否遗漏了什么?或者如果有更简单的方法?
答案 0 :(得分:2)
查找外部IP地址的一种简单方法是在互联网上使用开放服务。
例如,这可以从这里获取:Getting the external IP address但适合在WinRT中工作
Task<string> result = GetExternalIP();
string externalIP = (new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"))
.Matches(result.Result)[0].ToString();
......
public async Task<string> GetExternalIP()
{
HttpClient http = new System.Net.Http.HttpClient();
HttpResponseMessage response = await http.GetAsync("http://www.realip.info/api/p/realip.php");
return await response.Content.ReadAsStringAsync();
}
如果您直接在浏览器中尝试该网址,您将获得一个包含此内容的简单HTML页面
{"IP":"150.37.216.15"}
然后正则表达式只提取IP信息150.37.216.15