.Net 获取IP地址的问题

volcool 2008-03-24 12:09:26
原来一台机器用猫上网
public void GetUserIP()
{
IPAddress[] ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList;
if (ip.Length > 1)
{
this.lblIPAddress.Text = ip[1].ToString();
}
else
{
this.lblIPAddress.Text = "无法解析";
}
}
用这样的方法可以解析外网IP地址

刚买了台笔记本,所以买了一个路由在家上网,发现上面的代码无法获取外网ip地址,只能获取本机的局域网IP地址

找来找去也找不到方法。

请教一下如何才能获取外网ip地址
...全文
589 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldw701 2008-03-25
  • 打赏
  • 举报
回复
少了一个p
ldw701 2008-03-25
  • 打赏
  • 举报
回复
ublic static string GetIPAddress()
{

string user_IP = string.Empty;
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
{
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
user_IP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else
{
user_IP = System.Web.HttpContext.Current.Request.UserHostAddress;
}
}
else
{
user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
}
return user_IP;
}


用这个函数就能获取客户端真实IP了
怫悰 2008-03-25
  • 打赏
  • 举报
回复
好像没有考虑到访问者使用代理的情况,有能取到代理后面更可能真实ip地址的方法
boblaw 2008-03-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 volcool 的回复:]
是否其他用户在网吧,或者是小区局域网宽带的访问我的服务器就能获取到他们的外网ip地址?
[/Quote]
地下室小红叔 2008-03-24
  • 打赏
  • 举报
回复
可以的 搜一下"获取 IP 地址"
volcool 2008-03-24
  • 打赏
  • 举报
回复
关注...
volcool 2008-03-24
  • 打赏
  • 举报
回复
看错了,是 3楼的代码......

4楼的,你说通过外网访问是什么意思?

比如我做了个网站,需要获取用户IP

那么我现在开发的时候只能去到我局域网的ip地址

是否其他用户在网吧,或者是小区局域网宽带的访问我的服务器就能获取到他们的外网ip地址?
iuhxq 2008-03-24
  • 打赏
  • 举报
回复
如果访问外网,访问www.ip138.com不错。
volcool 2008-03-24
  • 打赏
  • 举报
回复
呵呵,谢谢楼上各位大侠
第一次发帖这么快就有人回复了 - -!
4楼的代码我在网上也找了份

但是还是想在研究研究
rangeon 2008-03-24
  • 打赏
  • 举报
回复
通过外网访问就能取到了
boblaw 2008-03-24
  • 打赏
  • 举报
回复
以下代碼來自互聯網:

private string netIP()
{
Uri uri = new Uri("http://www.ikaka.com/ip/index.asp");//查本机网络IP的网页
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = 0;
req.CookieContainer = new CookieContainer();
req.GetRequestStream().Write(new byte[0], 0, 0);
HttpWebResponse res = (HttpWebResponse)(req.GetResponse());
StreamReader rs = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("GB18030"));
string s = rs.ReadToEnd();
rs.Close();
req.Abort();
res.Close();
Match m = Regex.Match(s, @"IP:\[(?<IP>[0-9\.]*)\]");
if (m.Success) return m.Groups["IP"].Value;
string strnetIP = string.Empty;
return strnetIP;
}
youngerch 2008-03-24
  • 打赏
  • 举报
回复
比较蹊跷
insus 2008-03-24
  • 打赏
  • 举报
回复
ibmghostwjp 2008-03-24
  • 打赏
  • 举报
回复

我也遇到过此类问题.
就是这样解决的.
一行代码搞定,可以直接得到客户端的公网IP.


在cs代码中:
string serverip=this.Page.Request.UserHostAddress.ToString();
ibmghostwjp 2008-03-24
  • 打赏
  • 举报
回复

在cs代码中:

string serverip=this.Page.Request.UserHostAddress.ToString();

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧