我需要知道运行我的应用程序的设备的公共IP地址。该应用程序是Windows Store WinRT / Metro应用程序。
使用:NetworkInformation.GetInternetConnectionProfile和NetworkInformation.GetHostNames我能够检索本地IP地址,而不是公共IP地址。
最后,我找到了http://freegeoip.net/xml/,这是一个公共REST API,用于搜索IP地址和主机名的地理位置。但这不是一个可行的解决方案,我想知道我是否缺少什么?还是有更简单的方法?
查找外部IP地址的一种简单方法是使用Internet上的开放服务。
例如,这是从此处获取的:获取外部IP地址,但适用于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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句