j2ee获取服务器端IP的两种方法

1)InetAddress.getLocalHost().getHostAddress()

 

今天把在Windows下运行很正常的程序拿到Linux下测试,却出现了问题,经过检查发现是InetAddress.getLocalHost().getHostAddress() 取本地IP地址时出现了问题。因为期望得到的IP是222.xxx.xxx.xx,但实际打印出来的IP地址却是127.0.0.1。

查看 /etc/hosts 文件,里面有一条本机名和 222.xxx.xxx.xx这个 IP 对应的记录。把它注释掉,然后修改本机的主机名,又在 hosts 文件中加入主机名和222. xx.xx.xx的对应,问题解决了。

通过问题的解决方法,我们可以发现InetAddress.getLocalHost().getHostAddress() 方法找到本机 IP的实现方法——依靠本机的机器名去查询IP 地址,和 ping `hostname` 返回的 IP 地址是同一个,并不是 ipconfig 方法得到的 eth0 IP 地址。

 

2)request.getLocalAddr() ;

<%@ page contentType="text/html;charset=GBk" import="java.util.*"%>
<html>
<head>
<title>请求信息</title>
</head>
<body>
<p>使用request对象的方法获取信息</p>

<%
//服务器
String localName=request.getLocalName();
String serverName = request.getServerName();
String localAddr=request.getLocalAddr();
int localPort=request.getLocalPort();
int serverPort = request.getServerPort();%>

<b>服务器</b>:<%= localName %><br/>
<b>服务器端IP</b>:<%= localAddr %><br/>
<b>服务器端口</b>:<%= localPort %><p/>
//客户端信息
String remoteHost=request.getRemoteHost();
String remoteAddr=request.getRemoteAddr();
int remotePort=request.getRemotePort();%>
<b>浏览器端</b>:<%= remoteHost %><br/>
<b>浏览器端IP是</b>:<%= remoteAddr %><br/>
<b>浏览器端口</b>:<%= remotePort %><p/>


<%
//协议相关
String pro=request.getProtocol();
String pro1=request.getScheme();
int len=request.getContentLength();
String type=request.getContentType();
String charEncode=request.getCharacterEncoding();
%>
<b>协议版本</b>:<%= pro %><br/>
<b>协议</b>:<%= pro1 %><br/>
<b>数据内容长度</b>:<%= len %><br/>
<b>数据类型</b>:<%= type %><br/>
<b>字符编码方式</b>:<%= charEncode %><p/>
           
</body>
</html>

问题补充:

用此程序运行我的IP是127.0.0.1
但是用cmd->ipconfig查的结果却给这个不一样
是怎么回事啊
检举   |   2007-10-5 21:24
满意回答
如果你是在你自己的电脑上运行这个程序的话,只能得到以情况中的一种:
你用这个程序的时候在地址栏填的是:http://127.0.0.1

(或http://localhost

),这是本地回路,只能得到127.0.0.1这个IP,如果你是用的:http://

你的内网IP,这样只能得到 你的内网IP 的值。如果你是用的:http://

你的公网IP,这样只能得到 你的公网IP 的值。

要想一定得到你的公网IP的值只有方问公网的程序得到的才是。

ipconfig命令可以得到本地IP(也就是内网IP),如果是用的这台电脑拨的号,还可以得到公网IP。如果不是这台电脑拨号,使用的是共享上网这里也只能得到内网IP。

另外不知道你说的是想知道内网IP还是公网IP。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值