如何获取公网IP地址
IP地址分为本地IP和公网IP,本地IP地址多用于局域网中。则公网IP又称为实体IP地址,对应着每一部计算机的位置,因此要查询当前IP地址的地理位置也需要从公网IP上做功夫。
通过特定的网址获取公网IP地址,这里使用http://ip.qq.com/。
/// <summary>
/// 获取公网IP
/// </summary>
/// <returns></returns>
private static string InternetIP()
{
string IP = "";
HttpWebRequest ReqIP = (HttpWebRequest)HttpWebRequest.Create(new Uri(@"http://ip.qq.com/"));
HttpWebResponse ResIP = (HttpWebResponse)ReqIP.GetResponse();
Stream s = ResIP.GetResponseStream();
StreamReader sr = new StreamReader(s, Encoding.Default);
string line = sr.ReadToEnd();
Regex r = new Regex(@"((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)", RegexOptions.None);//设置正则表达式
Match m = r.Match(line);//对指定的字符串进行正则表达式匹配
IP = m.Groups[0].Value.ToString();
ResIP.Close();
return IP;
}
ip网址,有的网址没有对外进行授权获取则无法抓取网址信息。会返回异常:远程服务器返回错误: (401) 未经授权。如:
https://www.ipip.net/ip.html
抓取网址信息后,需要进行整篇的匹配。这里使用正则表达式(Regex)
C#正则表达式Regex类的用法