我这里用路由上网,本机配置的地址是192.168.1.2
我用下面的代码 System.Net.IPHostEntry ips = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
foreach (System.Net.IPAddress ip in ips.AddressList)
{
Console.WriteLine(ip.ToString());
}只获取192.168.1.2地址,根本获取不到公网的地址,那个前辈知道怎么获取呢?谢谢
我用下面的代码 System.Net.IPHostEntry ips = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
foreach (System.Net.IPAddress ip in ips.AddressList)
{
Console.WriteLine(ip.ToString());
}只获取192.168.1.2地址,根本获取不到公网的地址,那个前辈知道怎么获取呢?谢谢
这是个免费的
{
Uri uri = new Uri("http://www.ciker.net/ip/index.asp");
System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = 0;
req.CookieContainer = new System.Net.CookieContainer();
req.GetRequestStream().Write(new byte[0], 0, 0);
System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)(req.GetResponse());
StreamReader rs = new StreamReader(res.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"));
string s = rs.ReadToEnd();
rs.Close();
req.Abort();
res.Close();
System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(s, @"您的IP:(?<IP>[0-9\.]*)");
if (m.Success)
{
return m.Groups["IP"].Value;
}
else
{
return "Failed..";
}
}
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
try
{
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
using (StreamReader sr = new StreamReader(res.GetResponseStream()))
{
return sr.ReadToEnd();
}
}
}
catch (System.Exception e)
{
return e.Message;
}
finally
{
req.Abort();
}
}
// 通过外部网站得到本机的外部IP
static string GetOuterIP()
{
string patt = @"IP: \[(? <IP>[0-9\.]*)\]";
string url = "";
return Regex.Match(GetPage(url), patt).Groups["IP"].Value;
} static void Main()
{
foreach (IPAddress ip in Dns.GetHostEntry(Dns.GetHostName()).AddressList)
{
Console.WriteLine(ip);
}
Console.WriteLine();
Console.WriteLine(GetOuterIP());
}
{
string userIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (userIP == null || userIP == "")
{
userIP = Request.ServerVariables["REMOTE_ADDR"]; }
return userIP;
}
/// <summary>
/// 获得使用转发服务器下的用户真实ip
/// </summary>
/// <returns></returns>
public static string GetFormIpByTransmit(HttpRequest request)
{
string ret = string.Empty; ret = request.Headers["X-Client-Address"]; if (string.IsNullOrEmpty(ret))
{
ret = request.UserHostAddress;
}
else
{
// 如果客户端
if (ret.IndexOf(",") >= 0)
{
string[] ss = StringUtils.GetStrings(ret, ",");
ret = ss[ss.Length - 1];
}
} return ret;
}
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class IP_ShowIP : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("custom:"+Request.UserHostAddress+"<br>server:"+System.Net.Dns.GetHostAddresses("xxx.3322.org")[0].ToString());
}
}
//228.92.40.38
/// <summary>
/// 获得用户IP
/// </summary>
public string GetUserIp()
{
string ip;
string[] temp;
bool isErr = false;
if (HttpContext.Current.Request.ServerVariables["HTTP_X_ForWARDED_For"] == null)
ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
else
ip = HttpContext.Current.Request.ServerVariables["HTTP_X_ForWARDED_For"].ToString();
if (ip.Length > 15)
isErr = true;
else
{
temp = ip.Split('.');
if (temp.Length == 4)
{
for (int i = 0; i < temp.Length; i++)
{
if (temp[i].Length > 3) isErr = true;
}
}
else
isErr = true;
} if (isErr)
return "1.1.1.1";
else
return ip;
}放到服务器上后就是外网的了,本地调试是就是自己的局域网内的你可以试试祝你好运