本文通过 SOHU 提供的服务获取本机的外网 IP 地址
如果有自己的服务器,可以通过自己的服务器使用 asp dotnet core 服务器获取客户 IP 地址 方法,将获取的 IP 地址返回给用户
如果没有搭建服务器,可以使用 SOHU 的方法
访问 http://pv.sohu.com/cityjson 可以返回当前设备的外网 IP 地址
所以使用下面代码可以获取
代码语言:javascript复制 var httpClient = new HttpClient();
var str = await httpClient.GetStringAsync("http://pv.sohu.com/cityjson");
但是 SOHU 返回的使用 GBK 编码,可以通过 dotnet core 使用 GBK 编码 的方法,安装 System.Text.Encoding.CodePages 库 然后注册
代码语言:javascript复制 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var httpClient = new HttpClient();
var str = await httpClient.GetStringAsync("http://pv.sohu.com/cityjson");
Console.WriteLine(str); // var returnCitySN = {"cip": "183.63.127.82", "cid": "440100", "cname": "广东省广州市"};
此时返回的字符串不是只有 IP 需要读取字符串
代码语言:javascript复制 var regex = new Regex(@"(d .d .d .d )");
var match = regex.Match(str);
if (match.Success)
{
var ip = match.Groups[0].Value;
Console.WriteLine(ip);
}
这样就可以拿到本机的外网 IP 地址
本文所有代码放在 github 欢迎小伙伴访问