怎么读取客户端用户的内网IP,咋老读的是公网IP

feilong201202 2014-01-10 04:10:06
系统是部署在内网,用户分配了一个内网IP,但可以上网,在系统程序里怎么读取用户内网的IP
string uip = "";
if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
{
uip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else
{
uip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
}
这个好像读取的是用户公网IP
...全文
308 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
风吹腚腚凉 2014-01-11
  • 打赏
  • 举报
回复
我没明白,是获取本机的内网还是别人机器的内网IP?
hxhbluestar 2014-01-11
  • 打赏
  • 举报
回复
引用 11 楼 feilong201202 的回复:
是不是如果访问服务器用它的内网地址,方法HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); 就可以获取用户的静态IP
如果服务器和客户端都在同一个网段里面,也就是说中间没有经过其他路由的地址转换,你怎么写这个IP地址都好获得,ServerVariables里面有好几个都指向这个地址。 但是如果服务器和客户端之间经过互联网连接,是不可以的,sp1234 已经讲得很清楚了,你这样写在服务器端获得的地址仍然是客户端通过层层路由转交或者NAT之后的IP地址,不是你所谓的静态IP地址(你这个静态IP的说法其实就是本地hub或者路由器分配的一个ip地址,比如192.168.*.*)。如果真的想获得这个IP地址甚至MAC地址,IE里面可以启用ActiveX控件+Javascript去调用WMI获得,其他浏览器也要写相应的插件获得;当然你自己写一个客户端再嵌入一个浏览器的方法也未尝不可,如果仅仅想用简单一两句话来获得得到几乎不可能。
引用 10 楼 feilong201202 的回复:
现在是有套程序,登陆的时候要做IP验证,每个用户绑定一个静态IP,登陆的时候要获取用户的静态IP跟设置的IP做对比,现在是我在外网怎么都获取不到用户的静态IP
如果是互联网应用,你这个IP地址绑定有何意义?我随便换一个机房设置同样的地址分配,你怎么知道是从你原来绑定的地方来的,即使是MAC地址的绑定意义也不大(JS获取MAC地址你可以参考:http://www.cnblogs.com/0banana0/archive/2011/11/02/2232655.html,浏览器又只能使用IE了);所以你必须确认你这样做的目的是什么,否则浪费在这个上面的时间太多结果又是一个无效方案,得不偿失 更多参考可以看看这里:http://superuser.com/questions/63124/is-it-possible-to-get-the-nat-ip-address
feilong201202 2014-01-10
  • 打赏
  • 举报
回复
是不是如果访问服务器用它的内网地址,方法HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); 就可以获取用户的静态IP
feilong201202 2014-01-10
  • 打赏
  • 举报
回复
现在是有套程序,登陆的时候要做IP验证,每个用户绑定一个静态IP,登陆的时候要获取用户的静态IP跟设置的IP做对比,现在是我在外网怎么都获取不到用户的静态IP
  • 打赏
  • 举报
回复
如果你希望不要通过外网访问,那么你的客户端访问服务器时直接使用网段内部的IP(而不是服务器的外网IP或者域名)访问就行了。 但是这没有什么意义。实际上只有那种小办公室里的所谓的网络软件,才这样。如果客户的网络稍微大一点,中间会有多个网段、不同层次的交换机,你开发软件时就应该使用互联网的理念去设计程序,而不是那种只会在办公室小局域网里跑的软件思路。
feilong201202 2014-01-10
  • 打赏
  • 举报
回复
如果系统的地址是内网的,可以获取内网用户的静态IP吗
  • 打赏
  • 举报
回复
获取不到
feilong201202 2014-01-10
  • 打赏
  • 举报
回复
这个是获取服务器的静态IP,不行,我要获取访问系统的用户静态IP
衣舞晨风 2014-01-10
  • 打赏
  • 举报
回复
 private static string getIPAddress ( )
        {
            System.Net.IPAddress addr;
            // 获得本机局域网IP地址
            addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName ( ) ) .AddressList [0].Address ) ;
            return addr.ToString ( ) ;
        } 
这个可以吗?
feilong201202 2014-01-10
  • 打赏
  • 举报
回复
现在是在程序里怎么读取到用户的静态IP
rtdb 2014-01-10
  • 打赏
  • 举报
回复
看你服务器是什么IP。 服务器只用内网IP,客户就也用内网IP连进来。
feilong201202 2014-01-10
  • 打赏
  • 举报
回复
有高手吗好急哦

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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