.NET记录-获取外网IP以及判断该IP是属于网通还是电信

在工作时,需要获取服务器公网IP(外网IP),并且判断该IP地址是属于网通还是电信。花时间整理一下,自己实现的代码,以及后续遇到的问题。

 1         /// <summary>
 2         /// 获取外网IP
 3         /// </summary>
 4         /// <returns>IP</returns>
 5         public static string GetOuterIP()
 6         {
 7             string IP = string.Empty;
 8             Uri uri = new Uri("http://www.ip138.com/ips138.asp");
 9             System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri);
10             req.Method = "get";
11             using (System.IO.Stream s = req.GetResponse().GetResponseStream())
12             {
13                 using (System.IO.StreamReader reader = new System.IO.StreamReader(s))
14                 {
15                     char[] ch = { '[', ']' };
16                     string str = reader.ReadToEnd();
17                     System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(str, @"\[(?<IP>[0-9\.]*)\]");
18                     IP= m.Value.Trim(ch);
19 
20                 }
21             }
22             return IP;
23         }

 

 1 /// <summary>
 2         /// 判断ip是电信还是网通,网通为0,电信为1
 3         /// </summary>
 4         /// <returns></returns>
 5         public static string GetLocation()
 6         {
 7             string location = "0";
 8             try
 9             {
10                 Uri uri = new Uri("http://www.ip138.com/ips138.asp");
11                 System.Net.HttpWebRequest req = System.Net.WebRequest.Create(uri) as System.Net.HttpWebRequest;
12                 if (req != null)
13                 {
14                     req.Method = "get";
15                     using (System.IO.Stream s = req.GetResponse().GetResponseStream())
16                     {
17                         using (System.IO.StreamReader reader = new System.IO.StreamReader(s, Encoding.GetEncoding("gb2312")))
18                         {
19                             string str = reader.ReadToEnd();
20                             if (str.Contains("电信"))
21                             {
22                                 location = "1";
23                             }
24                         }
25                     }
26                 }
27             }
28             catch
29             {
30                 location = "0";
31             }
32             return location;
33         }

 

因为加班太多,工作任务紧张,所以欠考虑,没有在获取数据之后自己存储,后面遇到502,导致网站异常。

  • 因为获取的外网IP和方位都依赖于外部网站,所以需要考虑,当访问量过大时,ip138为防止服务器瘫痪,将会禁止访问。
  • 建议获取外网IP和方位之后,将外网IP和方位存储,可借助数据库、Redis、MemCache,甚至在服务器写入txt文件,来存储获取的外网IP和方位。

转载于:https://www.cnblogs.com/AlienXu/p/6875965.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值