请问我在JSP页面中使用如下语句:   
System.out.println("request.getRemoteAddr():  "  +  request.getRemoteAddr());   
System.out.println("request.getRemoteHost():  "  +  request.getRemoteHost());   
得到的结果相同(局域网内试验的结果)。   
那么getRemoteAddr()和getRemoteHost()到底有什么区别?   
我的目的就是要得到发出request的机器的IP地址和主机名字,但是两个得到的值是一样的,都是IP,
我到底要怎么样才能获得IP和主机名字 。

解决方案 »

  1.   

    getRemoteAddr():获得客户端的IP地址   
    getRemoteHost():获得客户端电脑的名字,若失败,则返回客户端电脑的IP地址
      

  2.   

    用dns
    DNS.GetHostByAddress将ip地址转换为主机名称
      

  3.   

    请问楼主是否用Tomcat的服务器,如果是请在server.xml查看一下connector中的enableLookups 说明如下: 如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
      

  4.   

    这个DNS是哪个包下的,是JAVA的吗
      

  5.   

    import java.net.InetAddress;   
    import java.net.UnknownHostException;   
    import java.util.Properties;   
    import java.util.Set;   
      
      
    public class TestSystemProperties {   
      
        public static void main(String [] args){   
            InetAddress netAddress = getInetAddress();   
            System.out.println("host ip:" + getHostIp(netAddress));   
            System.out.println("host name:" + getHostName(netAddress));   
     
        }   
      
        public static InetAddress getInetAddress(){   
      
            try{   
                return InetAddress.getLocalHost();   
            }catch(UnknownHostException e){   
                System.out.println("unknown host!");   
            }   
            return null;   
      
        }   
      
        public static String getHostIp(InetAddress netAddress){   
            if(null == netAddress){   
                return null;   
            }   
            String ip = netAddress.getHostAddress(); //get the ip address   
            return ip;   
        }   
      
        public static String getHostName(InetAddress netAddress){   
            if(null == netAddress){   
                return null;   
            }   
            String name = netAddress.getHostName(); //get the host address   
            return name;   
        }   
      
    }