首页 > 系统相关 >Java获取本地IP(Linux和windows)

Java获取本地IP(Linux和windows)

时间:2022-09-19 10:55:19浏览次数:54  
标签:Exception return String windows IP contains Java ipaddress throws

在Linux系统和windows系统使用java获取本地IP的方法是不同的,这就导致了生产环境与实际运用环境不同而导致代码出错。

 1 package com.cfcc.cfcs.common.utils;
 2 
 3 import java.net.InetAddress;
 4 import java.net.NetworkInterface;
 5 import java.util.Enumeration;
 6 
 7 public class IPUtils {
 8     /**
 9      * 获取本地IP地址
10      *
11      * @throws Exception
12      */
13     public static String getLocalIP() throws Exception {
14         if (isWindowsOS()) {
15             return InetAddress.getLocalHost().getHostAddress();
16         } else {
17             return getLinuxLocalIp();
18         }
19     }
20 
21     /**
22      * 获取Linux下的IP地址
23      *
24      * @return IP地址
25      * @throws Exception
26      */
27     private static String getLinuxLocalIp() throws Exception {
28         String ip = "";
29         try {
30             for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
31                 NetworkInterface intf = en.nextElement();
32                 String name = intf.getName();
33                 if (!name.contains("docker") && !name.contains("lo")) {
34                     for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
35                         InetAddress inetAddress = enumIpAddr.nextElement();
36                         if (!inetAddress.isLoopbackAddress()) {
37                             String ipaddress = inetAddress.getHostAddress().toString();
38                             if (!ipaddress.contains("::") && !ipaddress.contains("0:0:") && !ipaddress.contains("fe80")) {
39                                 ip = ipaddress;
40 //                                System.out.println(ipaddress);
41                             }
42                         }
43                     }
44                 }
45             }
46         } catch (Exception ex) {
47             ex.printStackTrace();
48         }
49         return ip;
50     }
51 
52     /**
53      * 判断操作系统是否是Windows
54      *
55      * @return
56      */
57     public static boolean isWindowsOS() {
58         boolean isWindowsOS = false;
59         String osName = System.getProperty("os.name");
60         if (osName.toLowerCase().indexOf("windows") > -1) {
61             isWindowsOS = true;
62         }
63         return isWindowsOS;
64     }
65 
66     public static void main(String[] args) throws Exception {
67         System.out.println(getLocalIP());
68     }
69 }

 

标签:Exception,return,String,windows,IP,contains,Java,ipaddress,throws
From: https://www.cnblogs.com/woju/p/16706939.html

相关文章

  • javascrpt的函数细节,匿名函数
    正常函数:functiona(i,j){returni+j;} 匿名函数:建议在最外面加上一对圆括号,目的是把函数当成表达式(function(i,j){returni+j})//只完成......
  • Java中AES加密和解密的方法分享
    转自:http://www.java265.com/JavaJingYan/202206/16559759223818.html下文笔者讲述java代码实现的AES加密和解密的示例分享,如下所示AES加密简介AES简介:Advanced......
  • windows无法输入c、v、h字母
    1、现象:1.1、英文模式无法输出c/v/h三个小写字母,但是大写可以输入,Backspace退格键也无法使用,在浏览网页时回车键会新打开一个页面1.2、中文模式不收影响1.3、切换成其他......
  • [踩坑回顾]关于点击复制的时候iPhone部分机型会调起输入框的解决方案
    在开发中遇到实现点击复制的功能,测试发现iPhone部分机型会在此时调起输入框。解决方案:在input标签中加入readonly属性。 <inputtype="text"id="award_code"v-model......
  • Java 异步编程 (5 种异步实现方式详解)
    ​ 同步操作如果遇到一个耗时的方法,需要阻塞等待,那么我们有没有办法解决呢?让它异步执行,下面我会详解异步及实现@mikechen目录什么是异步?一、线程异步二、Future......
  • 42. RxJava基本使用
    42.RxJava基本使用42.1RX思维为什么学习RxJava?→改变思维(响应式编程思维),编程效率提升。经典架构官方地址:https://github.com/ReactiveX/RxJavaRx系列官网:https......
  • Day01学习java的第一太难
    Makdown学习标题字体helloworld!helloworld!helloworld!分割线 引用我是你爹图片超链接我是你亲列表abcabc表格名字性别生......
  • java基础知识点
      这个是数据结构,在不同地方都用到了,在不同集合中用到  各种集合和组成结构......
  • JAVA的Stream流操作
    在JAVA中,涉及到对数组、Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理。例如,现在有这么一个需求:从给定......
  • java0蓝途之day11
    1,继承(extends)继承者被称为子类,被继承者被称为父类2,继承的特点继承之后,子类就会自动拥有父类中的所有非私有的属性和方法(不包含构造方法)类只能单一继承(一个类只能继承......