public static void main(String[] args) {
        try {
             InetAddress address = InetAddress.getLocalHost();//获取的是本地的IP地址
             System.out.println(address);//PC-20140317PXKX/192.168.0.121
             System.out.println(address.getHostAddress());//192.168.0.121
             System.out.println("===============");
             InetAddress address1=InetAddress.getByName("www.wodexiangce.cn");//获取的是该网站的ip地址,比如我们所有的请求都通过nginx的,所以这里获取到的其实是nginx服务器的IP地址
             System.out.println(address1);//www.wodexiangce.cn/124.237.121.122
             System.out.println(address1.getHostAddress());//124.237.121.122
             System.out.println("===============");
             InetAddress[] addresses=InetAddress.getAllByName("www.baidu.com");//根据主机名返回其可能的所有InetAddress对象
             for(InetAddress addr:addresses){
                 System.out.println(addr);//www.baidu.com/14.215.177.38
                                         //www.baidu.com/14.215.177.37
             }
         } catch (UnknownHostException e) {
             e.printStackTrace();
         }
 }

如果使用了反向代理,这种获取方式显然是不准确的,我们采用的方法是新建一个java类,里面配的是当前服务器的IP地址(也就是说这个类在每个节点服务器上部署的是不同的),程序里用的话直接获取这个工具类就可以了,虽然方法有点笨,但是解决问题了。

 public class CommonServerIP {
     /**
      * #######################################################################
      * ###############这个类主要是保存常用的一些固定的服务器IP#####################
      * #######################################################################
      */
      public static String CURRENT_SERVER="124.237.121.46";//当前服务器的ip地址
 }

下面这段代码是别人写的,先贴在这:

   /**
      * 获取服务器IP地址
      * @return
      */
     @SuppressWarnings("unchecked")
     public static String  getServerIp(){
         String SERVER_IP = null;
         try {
             Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();
             InetAddress ip = null;
             while (netInterfaces.hasMoreElements()) {
                 NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
                 ip = (InetAddress) ni.getInetAddresses().nextElement();
                 SERVER_IP = ip.getHostAddress();
                 if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress()
                         && ip.getHostAddress().indexOf(":") == -1) {
                     SERVER_IP = ip.getHostAddress();
                     break;
                 } else {
                     ip = null;
                 }
             }
         } catch (SocketException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }

         return SERVER_IP;
     }

Java里面获取当前服务器的IP地址的更多相关文章

  1. 用Java来获取访问者真实的IP地址

    用Java来获取访问者真实的IP地址 转载 2016年06月07日 14:36:02 标签: 16497 编辑 删除 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAdd ...

  2. python之获取微信服务器的ip地址

    # -*- coding: cp936 -*- #PYTHON 27 #xiaodeng #获取微信服务器的ip地址 import urllib url='https://api.weixin.qq. ...

  3. Java如何获取本地计算机的IP地址和主机名?

    在Java编程中,如何获取本地计算机的IP地址和主机名? 以下示例显示如何使用InetAddress类的getLocalAddress()方法获取系统的本地IP地址和主机名. package com. ...

  4. JAVA_用Java来获取访问者真实的IP地址

    在jsp里,获取客户端的ip地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  5. Java 获取当前项目所在服务器的 IP 地址

    java中获取当前服务器地址主要使用到InetAddress这个类 public static void main(String[] args) { try { //用 getLocalHost() ...

  6. Java根据HttpServletRequest请求获取服务器的IP地址

    以下总结了两种根据HttpServletRequest请求获取发出请求浏览器客户端所在服务器的IP地址方法: 代码: import javax.servlet.http.HttpServletRequ ...

  7. Java里面获取当前服务器(linux环境)的IP地址--与请求者的真实IP

    package com.wfd360.Util; import javax.servlet.http.HttpServletRequest; import java.net.Inet4Address; ...

  8. Java Web项目获取客户端和服务器的IP地址

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  9. JAVA 获取指定网址的IP地址 实例

    如今买票是一大难事,在高峰时段 打开12306网站,慢的像蜗牛,想到以前用修改hosts文件来登录Google(Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址 ...

随机推荐

  1. Python函数信息

    Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...

  2. 修改项目生成Gemfile的模板

    修改项目生成Gemfile的模板 gedit $rvm_path/gems/ruby-2.1.5/gems/railties-4.1.8/lib/rails/generators/rails/app/ ...

  3. html5与html4的区别,如何一眼区分

    还是在面试过程中遇到的这个问题,但是当时感觉回答的不是很全面,回来以后自己做的总结: 以上这个问题如果教大家看源码,可能一眼很直观的就能认出,那个是html4,那个是html5,但是面试的时候问道这个 ...

  4. C语言 06 指针

    int *p; //第一个*是象征意义. p = &a; 等价于 int *p = &a; //第二个*是不正确的 *p = &a; //第三个*是访问指针变量指向的存储空间. ...

  5. 161229、SpringMVC的各种参数绑定方式

    1. 基本数据类型(以int为例,其他类似): Controller代码: @RequestMapping("saysth.do") public void test(int co ...

  6. 非root用户 gcc安装

    亲测 可以安装 过程并不复杂 但可能需要一些时间 认真一点 按照步骤 一定可以成功哒 其他版本可以将ftp.gnu.org/gnu/gcc/敲入浏览器,找到自己需要的文件:[安装过4.9.0:成功:用 ...

  7. 怎么通过 Mysql 实现数据同步呢?

    怎么使 mysql 数据同步先假设有主机 A 和 B ( linux 系统),主机 A 的 IP 分别是 1.2.3.4 (当然,也可以是动态的),主机 B 的 IP 是 5.6.7.8 .两个主机都 ...

  8. 关于yuv格式

    首先,内存分布        1:YUV420          (1):I420:              YYYYYYYY UU VV    =>YUV420P          (2): ...

  9. C# DllImport“调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配 ”

    调用外部dll时,出现如下问题 C# DllImport“调用导致堆栈不对称.原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配.请检查 PInvoke 签名的调用约定和参数与非托管的目标 ...

  10. js如何判断获取到的值是否在数组中

    很简单,定义一个数组,判断下就得了. var arrayList = [1,2,3,4]; arrayList .indexOf(2); 返回0 arrayList .indexOf(6); 返回1 ...