asp.net 中如何取得客户端的真实公网ip地址

pgdoryoku 2009-04-21 10:29:21
RT,
...全文
1133 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
tyhAaron 2010-04-28
  • 打赏
  • 举报
回复
顶一下
civilman 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 jzj083271930 的回复:]
楼主怎么不说一下你是怎么搞定的啊,我获取的总是客户端的内网IP
[/Quote]

是他自己弄错了,他自己在内网上,去访问内网上的另一台机器,当然获得的是内网ip了.
都在内网上,你的访问信息都没在外网上转,怎么可能让另一台机器获得你的外网ip.
sk124824132 2010-01-31
  • 打赏
  • 举报
回复
dddddd
jzj083271930 2009-11-23
  • 打赏
  • 举报
回复
楼主怎么不说一下你是怎么搞定的啊,我获取的总是客户端的内网IP
shancheng44 2009-11-20
  • 打赏
  • 举报
回复
谢谢分享,学习了
zhnzzy 2009-04-21
  • 打赏
  • 举报
回复
你在公司里面是内网,访问得到的IP也是内网的
syc958 2009-04-21
  • 打赏
  • 举报
回复
可以这样来写: public static bool IsIP(string ip)
{
return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");

}
syc958 2009-04-21
  • 打赏
  • 举报
回复
Utils.IsIP(result)是一个判断获取到的值是不是可以和IP相匹配的值....可以通过正则自己写...
syc958 2009-04-21
  • 打赏
  • 举报
回复
不要忘记对代理的判断....
string result = String.Empty;

result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(result))
{
result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}

if (string.IsNullOrEmpty(result))
{
result = HttpContext.Current.Request.UserHostAddress;
}

if (string.IsNullOrEmpty(result) || !Utils.IsIP(result))
{
return "127.0.0.1";
}

return result;
jack20080808 2009-04-21
  • 打赏
  • 举报
回复
/// <summary>
/// 获取用户登陆IP
/// </summary>
/// <returns>返回用户IP</returns>
public static string GetIp()
{
string user_IP;
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
{
user_IP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else
{
user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
}
return user_IP;
}
wujinjian2008n 2009-04-21
  • 打赏
  • 举报
回复
Request.UserHostAddress

你在内网访问肯定取到的是内网的IP,要用外网访问才行。
pgdoryoku 2009-04-21
  • 打赏
  • 举报
回复
感谢楼上的各位大狭,
但是我想要的是能真实读出客户端的公网ip地址呀,大家给我的都只能取内网的ip地址.
feifeiyiwen 2009-04-21
  • 打赏
  • 举报
回复
有些地方公网的对外ip地址是一个
zhnzzy 2009-04-21
  • 打赏
  • 举报
回复


string result = String.Empty;

result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(result))
{
result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
Virgil_Ye 2009-04-21
  • 打赏
  • 举报
回复
对,是方括号。

这个问题可以百度下,有一些相关文章,不过这种方法不一定获得就是真实IP地址。

需考虑的因素较多:)
pgdoryoku 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhnzzy 的回复:]
C# code
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
[/Quote]
谢谢.
但是这条语句只能取到内网的ip地址,我想要的是能取到公网的ip地址的方法。
rtdb 2009-04-21
  • 打赏
  • 举报
回复
要想取真正的地址,除非在客户端运行个控件,
否则只能像楼上那样取,有时不太可靠。
zhnzzy 2009-04-21
  • 打赏
  • 举报
回复

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
pgdoryoku 2009-04-21
  • 打赏
  • 举报
回复
我这样写后,

        string tem="";
tem = Request.ServerVariables("REMOTE_ADDR");
Response.Write(tem.ToString());


1楼的方法出现错误:
Non-invocable member 'System.Web.HttpRequest.ServerVariables' cannot be used like a method

怎么回事?
蓝海D鱼 2009-04-21
  • 打赏
  • 举报
回复
Request.ServerVariables("REMOTE_ADDR")
加载更多回复(2)
某公司采用代理服务器接入 Internet,网络拓扑结构如图1-1所示。 请填写host1的Internet协议属性参数。 IP地址: (1) ; 子网掩码: (2) ; 默认网关: (3) ; 其,host1 默认网关为图接口 (4) 处的 IP地址。 答案: (1)118.165.3.178 (2)255.255.255.192    (3)118.165.3.190 (4)2(或接口2) 若host1要访问Internet,根据默认路由,数据报文经IP地址为 (5) 的接口发送到IP 地址为 (6) 的网关。 答案:(5)118.165.3.178 (6)118.165.3.190 与命令route print作用等价的命令为 (7) 。 A. netstat -r B. ping C. tracert D. arp –a 答案:A 或 netstar -r 接口3的IP地址为 (8) 。 答案:204.116.172.34 某公司要在 Windows 2003 Server 上搭建内部FTP服务器,服务器分配有一个静态 的公网IP地址228.121.12.38。 在Windows 2003安装FTP服务,需在“应用程序服务器”选项的 (1) 组件 复选框选择“文件传输协议(FTP)服务”进行安装。 (1)备选答案: A. ASP.NET B. Internet信息服务(IIS) C. 应用程序服务器控制台 D. 启用网络服务 答案:B 或 Internet信息服务 (IIS) 在图2-1,在“输入此FTP站点使用的 IP地址”文本框应填入 (2) ,默 认情况下“输入此FTP站点的TCP端口”文本框应填入 (3) 。 答案:(2)228.121.12.38 (3)21 在图2-2,如果FTP资源存储在F盘,新建FTP站点的默认主目录为 (4) 。 (4)备选答案: A. F:\inetpub\ftproot B. F:\ftp C. F:\ftp\root D. F:\inetpub\wwwroot 答案:A 或 F:\inetpub\ftproot FTP服务器配置完成后,可以在网络上另一台 PC测试 FTP是否配置成功。测试 过程为:在该计算机上命令行模式下输入命令 (5) ,在出现 USER提示时输入 FTP 服务器上计算机管理员名称和密码就可以登陆了。如果该 FTP上开启了匿名访问功能, 在用户名处输入 (6) ,密码处填写一个 Email地址也可以登录。 (6)备选答案: A. anonymous B. user C. administrator :(5)ftp 228.121.12.38 (6)A 或 anonymous 依据图2-2的配置,该FTP服务器配置完成后,用户可以上传文件吗?为什么? 答案:不可以。(1分)因为FTP服务器没有赋予“写入”权限。(2分) 该网络,区域 1 是防火墙的 (1) 。为使该企业网能够接入 Internet,路由器的 接口1可以使用的IP地址是 (2) 。 备选答案: (1)A. DMZ B. Trust区域 C. Untrust区域 (2)A. 10.1.1.1 B. 61.11.52.101 C. 172.30.1.1 D. 192.168.1.1 答案:(1)A 或 DMZ (2)B 或 61.11.52.101 若需要架设一台Web服务器对外提供服务,域名为www.test.com,外网 IP地址为 61.11.52.98,内网IP地址为192.168.1.4,则Web 服务器应该放置在 (3) 。若内网用 户可以通过域名正常访问该Web服务器,而外网用户无法访问该服务器。经检查,Web 服务器的DNS记录配置正确,则可能的原因是 (4) 。 备选答案: (3)A. 区域1 B. 区域2 (4)A. 路由器上NAT表项配置错误 B. DHCP服务器配置错误 C. Web服务器未启动 答案:(3)A 或区域1 (4)A 或 路由器上NAT 表项配置错误 若区域 2 的计算机接入 Internet 时,网络连接时断时续,网络管理员利用 Sniffer抓包工具分析区域 2 的分组,发现大量 arp 应答数据包占用了网络带宽,则可能的故障原因是 (5) 。为了排除故障,网络管理员应采取的措施为 (6) 。 (5)备选答案: A. 网络线路出现故障 B. 网络出现了arp病毒 C. DNS服务器配置错误 D. 防火墙配置错误 答案:(5)B 或网络出现了arp病毒(2分)   (6)查出受病毒感染的机器,将其从网络断开(1分) (或区域2所有的计算机都安装arp防火墙) (7)备选答案: A. Web服务器未启动 B. DNS服务器未启动 C. 客户端机器网络线路故障 D. 客户端机器网卡故障 答案:C 若某客户机使用 IE 可以正常访问网站,而 QQ 软件不能联网,可能的原因是 (8)备选答案: A. DNS服务器配置错误 B. QQ软件代理配置错误 C. 客户端机器网络线路故障 D. 客户端机器网卡故障 答案:B 某公司通过服务器S1的“路由和远程访问”服务接入Internet,拓扑结构如图4-1 所示。其,服务器S1 的操作系统为Windows Server 2003,公司从 ISP处租用的公网 IP地址段是202.134.135.88/29。 对服务器S1进行配置时,打开“NAT/基本防火墙”配置窗口,在图 4-2(a) 、(b)、 (c),配置lan接口的是 (1) ,配置wan接口的是 (2) 。答案:(1)(a) 或图4-2(a) (2)(b)或 图4-2(b) 为保证内网 PC 可以访问 Internet,图 4-3 所示 wan 接口的地址池,起始地址为 (3) ,结束地址为 (4) 。 如果内网 Web 服务器对外提供服务的 IP 地址是 202.134.135.92,则需要在图 4-4 “保留此公用IP地址”文本框填入 (5) , “为专用网络上的计算机”文本框填 入 (6) 。 答案: (3)202.134.135.89 (4)202.134.135.93   (5)202.134.135.92 (6)192.168.1.100 为保证 Web 服务器能正常对外提供服务,还需要在图 4-5 所示的“服务和端口”选 项卡勾选 (7) 选项。如果要让来自 Internet 的 ping 消息通过 S1,在图 4-6 至少 要勾选 (8) 选项。 答案: (7)web服务器(HTTP) (8)传入的回应请求 以下是用 ASP 实现的一个网上报名系统。用 IE 打开网页文件“index.asp”后的效果 【index.asp文档的内容】 <% set conn=server.CreateObject("adodb.connection") conn.open"driver={Microsoft Access driver (*.mdb)};dbq="&server.mappath("date/date.mdb") exec="select * from webset" 为程序空缺处(1)选择正确答案。 备选答案: A. Open B. Run C. Execute D. Dim 答案:A 备选答案: A. Text B. Submit C. Password D. Radio E. Checkbox F. Option G. Select H. Reset 2)A (3)C (4)D (5)G (6)B 该网页连接的数据库类型是 (7) 。 备选答案: A. Oracle B. SQLServer C. Access D. DB2 答案:C HTML文档的标记的cellpadding属性用于定义 (8) 。 备选答案: A. 内容对齐方式 B. 背景颜色 C. 边线粗细 D. 单元格边距 答案:D
Windows2003 建立WEB服务器 Windows 2003 Standard Edition、Windows 2003 Enterprise Edition、Windows XP Professional 、Windows 2000 Server、Windows 2000 Advanced Server 以及 Windows 2000 Professional 的默认安装都带有 IIS 。在系统的安装过程IIS是默认不安装的,在系统安装完毕后可以通过添加删除程序加 装 IIS。 IIS 是微软推出的架设 WEB、FTP、SMTP 服务器的一套整合系统组建,捆绑在上列NT核心的服务器系统。本文针对通过Window s2003 IIS组件配合花生壳动态域名解析软件向互联网提供WEB服务。 第一步:安装组件 在控制面板的添加/删除程序——Windows组件向导——应用程序服务器——选"Asp.NET",然 后他就会自动把"Internet 信息服务(IIS"的相关服务也装上。如下图: 在选定需要安装的服务后安装向导会提示需要插入Windows 2003安装光盘,这时您插入安装盘按照提示进行安装,IIS的WEB很快便自动安装完成 。 第二步:建立网络通讯部分,为所建立的WEB服务设置动态域名解析服务配置 1.下载花生壳动态域名解析软件并安装。登录oray网站[产品心]—[花生壳]—[下载花生 壳客户端] 2.运行花生壳软件,点击"注册新护照",根据弹出注册护照窗口提示进行注册。注册新 护照完成后,使用所注册的护照名称和密码填入花生壳软件进行登陆。 3.申请一个免费域名作为互联网访问WEB服务的"网址"。登录oray网站[域名心]—[注册 域名]—[免费域名]—[注册选定免费域名]即可。 4.根据提示激活上一步所申请的免费域名花生壳动态DNS服务 这时候,花生壳软件已经在线了 ,我们所申请的免费域名已经绑定到当前的公网IP地址,互联网可通过所申请的域名直 接访问到当前主机的服务了,如果你的主机接在路由器或代理服务器后,请参考内网建 站的文档。下面我们继续WEB服务搭建。 第三步:建立WEB站点 1、打开Internet 信息服务(IIS管理器,可以在 开始 – 运行 – 输入"Inetmgr"打开,也可以通过 控制面板 – 管理工具 进行打开。 2、开始添加站点,在 < 网站 > 上点击鼠标右键 < 新建 > -- < 网站 > 3、点击 < 下一步 > 以后,输入站点描述,只是在IIS里面的一个识别而已,不过为了自己方便识别,在这里 我就输入网站访问的域名oraytest2007.vicp.net,防止以后随着站点的增加而造成管理 困难。确认以后点击 < 下一步 >。 4.网站IP地址:一般没有特殊要求的,选择"全部未分配"就可以了。 端口:一般使用默认值80,那么别人访问您的网站的时候就不需要在后面加端口号,如 果换成了其他端口,别人访问您的时候就需要在域名后加上端口,如把端口换成8080则 在浏览器里需要输入http://oraytest2007.vicp.net:8080 进行访问。(同时,前面的HTTP不能缺省。) 主机头:在这里填入别人访问您网站的域名,如果有多个域名可以随后在站点属性里面 进行修改。 确定输入资料正确以后点击 < 下一步 >。 5、选择网站文件存放的路径,然后点击 < 下一步 >。 6、在这里把 < 运行脚本(如ASP)> 也选,然后点击 < 下一步 >。 7.这样就基本完成整个站点的建立了,下面我们继续进行相关配置。 第四步:配置WEB站点 1、IIS 6的站点属性基本配置类似于IIS 5,在这里也详细介绍了,可以参考Windows 2000建立WEB服务技术文章。 2、由于IIS 6比IIS 5多了一个WEB服务扩展控制,如果没有设置正确,ASP等……其他脚本网页也是无法正常显 示的。双击Web服务扩展,然后在Active Server Pages(即ASP)上点击鼠标右键,选则< 允许 >。 第五步:测试站点 打开IE浏览器,在地址栏输入http://oraytest2007.vicp.net进行测试。在这里要提 醒用户,很多时候忘记设置自己的默认首页文档,因此造成无法访问。(可以在站点属 性――文档进行设置) ----------------------- Windows2003建立WEB服务器全文共9页,当前为第1页。 Windows2003建立WEB服务器全文共9页,当前为第2页。 Windows2003建立WEB服务器全文共9页,当前为第3页。 Windows2003建立WEB服务器全文共9页,当前为第4页。 Windows2003建立WEB服务器全文共9页,当前为

110,539

社区成员

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

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

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