1. package com.handsight.platform.fras.util;
  2.  
  3. import org.apache.log4j.Logger;
  4.  
  5. import javax.servlet.http.HttpServletRequest;
  6. import java.io.IOException;
  7. import java.net.InetAddress;
  8. import java.net.NetworkInterface;
  9. import java.net.SocketException;
  10. import java.util.Enumeration;
  11.  
  12. /**
  13. * Created by Lft on 2019/2/28 10:30
  14. */
  15. /**
  16. * 常用获取客户端信息的工具
  17. *
  18. */
  19. public final class NetworkUtil {
  20.  
  21. /**
  22. *
  23. *@Description : windons下的ip
  24. *
  25. */
  26. public static InetAddress getLocalHostLANAddress() throws Exception {
  27. try {
  28. InetAddress candidateAddress = null;
  29. // 遍历所有的网络接口
  30. for (Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); ) {
  31. NetworkInterface iface = (NetworkInterface) ifaces.nextElement();
  32. // 在所有的接口下再遍历IP
  33. for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); ) {
  34. InetAddress inetAddr = (InetAddress) inetAddrs.nextElement();
  35. if (!inetAddr.isLoopbackAddress()) {// 排除loopback类型地址
  36. if (inetAddr.isSiteLocalAddress()) {
  37. // 如果是site-local地址,就是它了
  38. return inetAddr;
  39. } else if (candidateAddress == null) {
  40. // site-local类型的地址未被发现,先记录候选地址
  41. candidateAddress = inetAddr;
  42. }
  43. }
  44. }
  45. }
  46. if (candidateAddress != null) {
  47. return candidateAddress;
  48. }
  49. // 如果没有发现 non-loopback地址.只能用最次选的方案
  50. InetAddress jdkSuppliedAddress = InetAddress.getLocalHost();
  51. return jdkSuppliedAddress;
  52. } catch (Exception e) {
  53. e.printStackTrace();
  54. }
  55. return null;
  56. }
  57.  
  58. /**
  59. *
  60. *@Description :
  61. *
  62. *//**
  63. * 获取Linux下的IP地址
  64. *
  65. * @return IP地址
  66. * @throws SocketException
  67. */
  68. public static String getLinuxLocalIp() throws SocketException {
  69. String ip = "";
  70. try {
  71. for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
  72. NetworkInterface intf = en.nextElement();
  73. String name = intf.getName();
  74. if (!name.contains("docker") && !name.contains("lo")) {
  75. for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
  76. InetAddress inetAddress = enumIpAddr.nextElement();
  77. if (!inetAddress.isLoopbackAddress()) {
  78. String ipaddress = inetAddress.getHostAddress().toString();
  79. if (!ipaddress.contains("::") && !ipaddress.contains("0:0:") && !ipaddress.contains("fe80")) {
  80. ip = ipaddress;
  81. System.out.println(ipaddress);
  82. }
  83. }
  84. }
  85. }
  86. }
  87. } catch (SocketException ex) {
  88. System.out.println("获取ip地址异常");
  89. ip = "127.0.0.1";
  90. ex.printStackTrace();
  91. }
  92. System.out.println("IP:"+ip);
  93. return ip;
  94. }
  95. }

windows和linux下的本机IP的获取(亲测有效)的更多相关文章

  1. Linux下获得本机IP(非127.0.0.1)

    在Linux下用InetAddress.getLocalHost()方法获取本机IP地址,得到的结果总是:127.0.1.1.原来这个是etc/hosts文件中的配置,并非网卡的IP地址. 可用代码如 ...

  2. Linux下设置网卡静态ip

    Linux下设置网卡静态ip 如果是服务器版,没有图形界面只用用命令行修改配置文件 如果是客户端版本,可以用图形界面 配置的前提是要在root用户下才能重启网卡服务 图形界面: system-conf ...

  3. Windows 和  Linux 下 禁止ping的方法

    Windows 和Linux 下 禁止ping的方法 目的: 禁止网络上的其他主机或服务器ping自己的服务器 运行环境: Windows 03.08  linux 方法: Windows 03下: ...

  4. HDP2.0.6+hadoop2.2.0+eclipse(windows和linux下)调试环境搭建

    花了好几天,搭建好windows和linux下连接HDP集群的调试环境,在此记录一下 hadoop2.2.0的版本比hadoop0.x和hadoop1.x结构变化很大,没有eclipse-hadoop ...

  5. docker在windows下和linux下网络底层的一些区别

    windows和linux下的docker运行时的网络结构是有区别的 a.windows下,默认使用Hyper-v创建一个linux虚拟机,承载docker.所以从外向内的路径为: windows - ...

  6. Windows与Linux下文件操作监控的实现

    一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场 ...

  7. 怎样在Windows和Linux下写相同的代码

    目前,Linux在国内受到了越来越多的业内人士和用户的青睐.相信在不久的将来,在国内为Linux开发 的应用软件将会有很大的增加(这不,金山正在招兵买马移植WPS呢).由于未来将会是Windows和L ...

  8. socket在windows下和linux下的区别

    原文:socket在windows下和linux下的区别 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h    错误处理:errno.h 2 ...

  9. windows和linux下关闭Tomcat进程

    windows和linux下解决Tomcat进程 windows下启动Tomcat报错,8080端口号被占用,报错信息如下 两种解决方法,一种是关闭了这个端口号,另外一种是修改Tomcat下的serv ...

随机推荐

  1. 人民网基于FISCO BCOS区块链技术推出“人民版权”平台

    FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...

  2. Spring 核心技术(4)

    接上篇:Spring 核心技术(3) version 5.1.8.RELEASE 1.4.2 依赖关系及配置详情 如上一节所述,你可以将 bean 属性和构造函数参数定义为对其他托管 bean(协作者 ...

  3. python递归-三元表达式-列表生成式-字典生成式-匿名函数-部分内置函数-04

    递归 递归: # 函数在调用阶段直接或间接地又调用了自身 应用场景: # 将列表中的数字依次打印出来(循环的层数是你必须要考虑的点)   -->  l = [1, [2, [3, [4, [5, ...

  4. Python -----函数(基础部分)

    函数: 1.定义: 函数是对功能的封装 2.语法: def 函数名 函数体 函数名 函数名的命名规则和变量一样 3.函数的返回值: return,函数执行完毕,不会执行后面的 1.如果函数中不写ret ...

  5. 我狠起来连自己都打---如何简单实现Azure resource自动打标签

    你是否还在为花费大量Azure Resource打标签而烦恼呢?你是否还在因为这样低效的重复劳动而痛苦呢? 在很长一段时间内,笔者既要做云架构调整,又要做日常系统维护,还要参与各种各样的项目,在这种情 ...

  6. 转 java - java基础知识点

    转 https://www.cnblogs.com/xdp-gacl/p/3641769.html 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可 ...

  7. Soso(嗖嗖)移动 java 项目

    1.接口 通话服务 package Soso; // 接口 通话服务 public interface CallService { public abstract int call(int minCo ...

  8. 极简代码神器:Lombok使用教程

    Lombok 是一个非常神奇的 java 类库,会利用注解自动生成 java Bean 中烦人的 Getter.Setter,还能自动生成 logger.ToString.HashCode.Build ...

  9. 通过ping命令了解三层转发流程

    ping命令:因特网包探索器.本文主要通过路由器两端不同网段PC互ping来讲解三层转发流程. 例子:PC-A是如何 ping 通 PC-C 的,有几种情况? 说明:1.在条件1阶段PC-C不会刷新a ...

  10. 【Android】Failed to convert @drawable/picture into a drawable

    刚使用 eclipse 遇到了这个问题,图片的效果未显示出来,上网查找后发现这其实不算是问题:重启下工程或 eclipse 就行了. PS: 直接运行工程也可以,不影响效果.