1.利用request获取ip及端口
request.getHeader("User-Agent"); //就是取得客户端的系统版本
request.getRemoteAddr(); //取得客户端的IP
request.getRemoteHost(); //取得客户端的主机名
request.getRemotePort(); //取得客户端的端口
request.getRemoteUser(); //取得客户端的用户
request.getLocalAddr(); //取得本地IP
request.getLocalPort(); //取得本地端口
2.java.net获取项目本身的ip及端口
/**
* @param protocol http版本
* @param scheme 版本代号
* @return
*/
public String getUrl(String protocol, String scheme){
String ip = "";
String port = "";
MBeanServer mBeanServer = null;
if (MBeanServerFactory.findMBeanServer(null).size() > 0)
{
mBeanServer= (MBeanServer)MBeanServerFactory.findMBeanServer(null).get(0);
}
Set names = null;
try
{
names = mBeanServer.queryNames(new ObjectName("Catalina:type=Connector,*"), null);
}
catch (Exception e)
{
return "";
}
try {
ip = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Iterator it = names.iterator();
ObjectName oname = null;
while (it.hasNext())
{
oname = (ObjectName)it.next();
String pvalue;
try {
pvalue = (String)mBeanServer.getAttribute(oname, "protocol");
String svalue = (String)mBeanServer.getAttribute(oname, "scheme");
if (protocol.equals(pvalue) && scheme.equals(svalue))
{
port = ((Integer)mBeanServer.getAttribute(oname, "port")).toString();
}
} catch (AttributeNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstanceNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MBeanException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ReflectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return scheme+"://"+ip+":"+port;
}