62,072
社区成员
发帖
与我相关
我的任务
分享
public static string GetLocalIpv4()
{
string result = "";
try
{
// 获得网络接口,网卡,拨号器,适配器都会有一个网络接口
NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface network in networkInterfaces)
{
// 获得当前网络接口属性
IPInterfaceProperties properties = network.GetIPProperties();
// 每个网络接口可能会有多个IP地址
foreach (IPAddressInformation address in properties.UnicastAddresses)
{
// 如果此IP不是ipv4,则进行下一次循环
if (address.Address.AddressFamily != AddressFamily.InterNetwork)
continue;
// 忽略127.0.0.1
if (IPAddress.IsLoopback(address.Address))
continue;
result = address.Address.ToString();
}
}
}
catch (Exception ex)
{
result = "Error: " + ex.Message;
}
return result;
}
string GetUserIp()
{
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
{
return System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0];
}
else
{
return System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
}
直接调用这个在onload里 你浏览aspx的时候 就显示客户端的外网IP了.
一直在用...string URL = "http://iframe.ip138.com/ic.asp";
HttpWebRequest req =
(HttpWebRequest)HttpWebRequest.Create(URL);
req.Method = "GET";
req.ContentType = "text/html;charset=UTF-8";
using (WebResponse wr = req.GetResponse())
{
Stream myResponseStream = wr.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("UTF-8"));
retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
}
这样写的话,始终获取的都是服务器的外网IP 新手继续求指教
if(Context.Request.ServerVariables["HTTP_VIA"]!=null) // using proxy
{
ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); // Return real client IP.
}
else// not using proxy or can't get the Client IP
{
ip=Context.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP.
}
局域网的话试一下下面这种方法
System.Net.Dns.GetHostEntry(Request.ServerVariables["Remote_Host"]).AddressList[3].ToString();
谢谢你的回复,我正在尝试使用这个网址来抓取IP,但是有个问题。就是在如何从客户端发出请求到http://iframe.ip138.com/ic.asp,string URL = "http://iframe.ip138.com/ic.asp";
HttpWebRequest req =
(HttpWebRequest)HttpWebRequest.Create(URL);
req.Method = "GET";
req.ContentType = "text/html;charset=UTF-8";
using (WebResponse wr = req.GetResponse())
{
Stream myResponseStream = wr.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("UTF-8"));
retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
}
这样写的话,始终获取的都是服务器的外网IP 新手继续求指教[/quote]Request.UserHostAddress