• InetAddress.getLocalHost().getHostAddress() 问题


    InetAddress.getLocalHost().getHostAddress() 取的本地 IP,于是把取得的 IP 地址打了出来,是 66.xx.xx.xx 的 IP,但实际本机 IP 是 192.168.11.185,怎么可能呢?难道是这个方法不会区分哪个 IP 才是真实 IP (这台机器有多个 IP 地址,有虚通道IP),用 ifconfig 命令查也没有这个 66 网段的IP呀!于是 PING 这个 66 网段的 IP 地址,还能 ping 通!又 ping 了一下本机的主机名(hostname),结果 PING 到了 66 这个 IP 上!嗯,问题有了结论了。
        查看 /etc/hosts 文件,里面果然有一条本机名和 66.xx.xx.xx IP 对应的记录。把它注释掉,然后修改了一下本机的主机名,又在 hosts 文件中加入主机名和 127.0.0.1 的对应,问题解决了。
        InetAddress.getLocalHost().getHostAddress() 方法的实现方法不是很清楚,就知道它能找到本机 IP,原来它是依靠本机的机器名去查询的 IP 地址,和 ping `hostname` 返回的 IP 地址是同一个,并不是 ifconfig 方法得到的 eth0 IP 地址。
    可以用下面这个方法来获取客户端请求IP
    
    //获得访问 controller 端口的客户端 ip 地址
        public String getRemoteIp() {
            HttpServletRequest request = null;
            try {
                request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
            } catch (Exception e) {
                System.out.println("Can not get current IP.");
            }
            return request.getRemoteAddr();
        }
  • 相关阅读:
    SSM框架--详细整合教程
    ssh--整合注意事项
    SSH--三大框架整合原理
    springMVC的流程
    java框架问题整理
    集合的体系
    java异常机制
    java知识点
    Java编程思想【Thinking in java】
    实验三 指令实验(一)
  • 原文地址:https://www.cnblogs.com/tszr/p/16256194.html
Copyright © 2020-2023  润新知