阻塞方式请求,ipurl使用能连接的外网地址。
//常用的境内外访问网站
//https://1.1.1.1/cdn-cgi/trace
//https://1.0.0.1/cdn-cgi/trace
//http://104.16.22.1/cdn-cgi/trace
public static string GetPublicIp(string ipurl)
{
string tempip = "";
try
{
var req = WebRequest.Create(ipurl);
req.Timeout = 2000;
var response = req.GetResponse();
var resStream = response.GetResponseStream();
if (resStream != null)
{
var sr = new StreamReader(resStream, Encoding.UTF8);
var htmlinfo = sr.ReadToEnd();
//匹配IP的正则表达式
var r = new Regex("((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)\\.){3}(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|[1-9])", RegexOptions.None);
var mc = r.Match(htmlinfo);
//获取匹配到的IP
tempip = mc.Groups[0].Value;
resStream.Close();
sr.Close();
response.Dispose();
}
return tempip;
}
catch (Exception err)
{
Debug.LogError("当前探测URL:" + ipurl + ",错误描述:" + err.ToString());
}
return tempip;
}