专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

c#获取外网IP的方法

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:14:59       共计:3627 浏览

在网上搜了好几个用来获取外网IP的URL,在应用中也用了,但是过了一段时间发现,其中一个失效了,可能是请求的过多,用的人太多了吧。


今天找了一个来之“站长之家”的:


很简单的一个方法,直接看代码吧:

复制代码


public static string getExternalIp()

       {

           try

           {

               WebClient client = new WebClient();

               client.Encoding = System.Text.Encoding.Default;

               //string response = client.DownloadString("http://1212.ip138.com/ic.asp");//失效了

               //string response = client.DownloadString("http://icanhazip.com/");//可用,可能不稳定

               string response = client.DownloadString("http://ip.chinaz.com/");//站长之家

               string myReg = @"<dd class=""fz24"">([\s\S]+?)<\/dd>";

               Match mc = Regex.Match(response, myReg, RegexOptions.Singleline);

               if (mc.Success && mc.Groups.Count > 1)

               {

                   response = mc.Groups[1].Value;

                   return response;

               }

               else

               {

                   return "Can't get you Ip address!";

               }

           }

           catch(Exception)

           {

               return "Can't get you Ip address!";

           }

             

       }


复制代码


这里需要注意一点的就是里面的正则,不熟悉,查了半天。我们在页面中根据class的名字来正则匹配出来IP地址:


我们看这个网址:http://ip.chinaz.com/


 


 


我们要获取的就是红框中的IP地址:使用正则匹配:

复制代码


string myReg = @"<dd class=""fz24"">([\s\S]+?)<\/dd>";

               Match mc = Regex.Match(response, myReg, RegexOptions.Singleline);

               if (mc.Success && mc.Groups.Count > 1)

               {

                   response = mc.Groups[1].Value;

                   return response;

               }


复制代码


注意:@的作用就是输出“\”这种特殊字符时不需要转义。


\s表示匹配任意空字符,\S表示匹配任意不是空白符的字符。等价于 [^ \f\n\r\t\v]。


  +表示匹配前面的子表达式一次或多次。


  ?表示匹配前面的子表达式零次或一次。


+?一起表示重复1次或更多次,但尽可能少重复。与上面一样,只是至少要重复1次。


          最后才突然发现:站长之家提供查询外网IP的接口:http://ip.chinaz.com/getip.aspx

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:C#获取IP及判断IP是否在区间方法 | ·下一条:C#如何获取本地的内网(局域网)和外网(公网)IP地址的方法

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有