title | author | date | CreateTime | categories |
---|---|---|---|---|
dotnet C# 获取本机外网 IP 地址 | lindexi | 2019-11-17 16:38:10 +0800 | 2019-11-17 16:37:39 +0800 | dotnet C# |
本文通过 SOHU 提供的服务获取本机的外网 IP 地址
如果有自己的服务器,可以通过自己的服务器使用 asp dotnet core 服务器获取客户 IP 地址 方法,将获取的 IP 地址返回给用户
如果没有搭建服务器,可以使用 SOHU 的方法
访问 http://pv.sohu.com/cityjson 可以返回当前设备的外网 IP 地址
所以使用下面代码可以获取
var httpClient = new HttpClient(); var str = await httpClient.GetStringAsync("http://pv.sohu.com/cityjson");
但是 SOHU 返回的使用 GBK 编码,可以通过 dotnet core 使用 GBK 编码 的方法,安装 System.Text.Encoding.CodePages 库 然后注册
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 需要读取字符串
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 欢迎小伙伴访问