首页 > 其他分享 >系统获取 IP 工具类

系统获取 IP 工具类

时间:2023-06-07 13:36:06浏览次数:48  
标签:java String IP return 获取 coll netInterfaces import 工具

package cn.com.infosec.IDCard.radius.util;

/**
 * <p>
 * {此处加类的实现说明}
 * </p>
 *
 * <p>
 * 版权所有:北京信安世纪科技股份有限公司(c) 2020
 * </p>
 *
 * @author: jlcui
 * @date: 2023-06-0713:15
 */

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.*;

/**
 * 系统获取IP工具类
 */
public final class IPUtil {

    /**
     * 取到当前机器的IP地址,这里可以直接获取该服务器的所有网卡ip,如果包括内外网网卡,就是两个ip,中间以,分隔。
     */
    public static String getIp() {
        String hostIp = null;
        List<String> ips = new ArrayList<String>();
        Enumeration<NetworkInterface> netInterfaces = null;
        try {
            netInterfaces = NetworkInterface.getNetworkInterfaces();
            while (netInterfaces.hasMoreElements()) {
                NetworkInterface netInterface = netInterfaces.nextElement();
                Enumeration<InetAddress> inteAddresses = netInterface.getInetAddresses();
                while (inteAddresses.hasMoreElements()) {
                    InetAddress inetAddress = inteAddresses.nextElement();
                    if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
                        ips.add(inetAddress.getHostAddress());
                    }
                }
            }
        } catch (SocketException ex) {
            ex.printStackTrace();
        }
        hostIp = collectionToDelimitedString(ips, ",");
        return hostIp;
    }

    /**
     * 集合转化为连接字符串
     */
    private static String collectionToDelimitedString(Collection<String> coll, String delim) {
        if (coll == null || coll.isEmpty()) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        Iterator<?> it = coll.iterator();
        while (it.hasNext()) {
            sb.append(it.next());
            if (it.hasNext()) {
                sb.append(delim);
            }
        }
        return sb.toString();
    }

    /**
     * 获取服务器名称
     */
    public static String getHostName() {
        String hostName = null;
        try {
            hostName = InetAddress.getLocalHost().getHostName();
        } catch (Exception e) {
            e.fillInStackTrace();
        }
        return hostName;
    }

    public static void main(String[] args) {
        System.out.println(IPUtil.getIp());
        System.out.println(IPUtil.getHostName());
        String[] strArr = {"Google", "Baidu", "IBM", "Github", "Stackoverflow"};
        List<String> list = Arrays.asList(strArr);
        String result = collectionToDelimitedString(list, "、");
        System.out.println(result);
    }
}

 

标签:java,String,IP,return,获取,coll,netInterfaces,import,工具
From: https://www.cnblogs.com/cuijinlong/p/17463054.html

相关文章

  • YS9082HC+B27B固件量产工具,YS9082HT可参考,YS9082HC+镁光MT29F512G08EBLCE开卡!YS9082HP
    YS9082HC+B27B,镁光MT29F512G08EBLCE开卡!闪存ID:2C,C3,08,32,E6,00。如下图,不知道为什么检测出来的是9081?开卡设置,从量产部落下载的YS9082HCMPTool,如下图:结果报错:重新设置,更改了大小,240G改到了160G!分析是坏块过多了!我有不少B27颗粒的坏块都多,还是主控问题?我的其他两片B27,开120G都......
  • element ui 中获取级联积极下拉框的示例
      <el-form-itemlabel="班组"prop="bz">              <el-cascader:options="orgTreeData"ref="bzNameRef":show-all-levels="false"                :props="{che......
  • 即时通信聊天工具的原理与设计
     该软件采用P2P方式,各个客户端之间直接发消息进行会话聊天,服务器在其中只扮演协调者的角色(混合型P2P)。1.会话流程设计     当一个新用户通过自己的客户端登陆系统后,从服务器获取当前在线的用户信息列表,列表信息包括了系统中每个用户的地址。用户就可以开始独立工作,自主地......
  • Java多线程-工具篇-BlockingQueue
    前言:   在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认......
  • JAVA获取上月、本月的第一天和最后一天
    1、获取【上个月】第一天和上个月最后一天/***获取上个月第一天和上个月最后一天**@throwsParseException*/publicstaticMap<String,String>getLastOneMonthDay(){SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-dd");Map<String,String......
  • 抓包工具Fiddler
    (3条消息)抓包工具fiddler的安装和使用详解_抓包工具fiddler_三也_小也的博客-CSDN博客二、抓包工具Fiddler-鬼谷仙生-博客园(cnblogs.com)......
  • js 获取函数的调用者
    办法严格模式arguments.callee.caller不给使用了歪路子截取newError()的报错字符串stackconstgetCall=()=>{letcallArr=newError().stack.split("\n");callArr.splice(0,3);constpattern=/at(\w+)/;callArr=callArr.map(it=>(it.match(patt......
  • 启动服务ip问题
    同无线网段,我ping通别人,别人不通我   关闭火绒  ......
  • 盘点最好的Linux网络监控工具!
    想要成为一名优秀的Linux运维工程师,不仅要具备专业的技能,还需要熟练掌握各种各样的工具,它是我们提高工作效率不可或缺的好助手,本文为大家盘点最好的Linux网络监控工具,快来了解一下吧。1、OpenNMS自从1990年以来,OpenNMS就已经存在了,当时它已称为面向企业和大型网络的面......
  • 【HarmonyOS】【ArkTS】如何使用HTTP网络请求获取动态数据刷新UI界面
    【关键字】HttpRequest、ArkTS、网络数据请求、@ohos.net.http【前言】在使用ArkTS开发HarmonyOS应用时,需要调用HTTP网络请求 @ohos.net.http 动态获取数据,进行UI列表刷新,这想必是应用开发最常见的功能。但是根据官网网络请求的示例代码进行功能开发时,封装方法进行HTTP请求后,返回......