精华内容
下载资源
问答
  • )NetworkInterface.getNetworkInterfaces();//如果枚举对象里面还有内容(NetworkInterface)while (netInterfaces.hasMoreElements())...}//获取下一个内容(NetworkInterface)NetworkInterface ni = (NetworkInterfac...

    )

    NetworkInterface.getNetworkInterfaces();

    //如果枚举对象里面还有内容(NetworkInterface)

    while (netInterfaces.hasMoreElements()) {

    if (bFindIP) {

    break;

    }

    //获取下一个内容(NetworkInterface)

    NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();

    //----------特定情况,可以考虑用ni.getName判断

    //遍历所有IP

    Enumerationips = ni.getInetAddresses();

    while (ips.hasMoreElements()) {

    inetAddress = (InetAddress) ips.nextElement();

    if (inetAddress.isSiteLocalAddress()         //属于本地地址

    && !inetAddress.isLoopbackAddress()  //不是回环地址

    && inetAddress.getHostAddress().indexOf(":") == -1) {   //地址里面没有:号

    bFindIP = true;     //找到了地址

    break;              //退出循环

    }

    }

    }

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    return inetAddress;

    }

    public static String getLocalIP() {

    return getInetAddress().getHostAddress();

    }

    }

    展开全文
  • JAVA获取本机IP地址

    千次阅读 2020-09-15 00:28:29
    在百度搜索“JAVA获取本机IP地址”,基本上搜到比较普遍的说法是InetAddress.getLocalHost().getHostAddress(),实际上这段代码在复杂环境下是不准的。IP地址在现在的网络环境更加复杂了,比如有Lan,WIFI,蓝牙热点...

    在百度搜索“JAVA获取本机IP地址”,基本上搜到比较普遍的说法是InetAddress.getLocalHost().getHostAddress(),实际上这段代码在复杂环境下是不准的。IP地址在现在的网络环境更加复杂了,比如有Lan,WIFI,蓝牙热点,虚拟机网卡...
    即存在很多的网络接口(network interfaces),每个网络接口就包含一个IP地址,并不是所有的IP地址能被外部或局域网访问,比如说虚拟机网卡地址等等。

    直接上代码

    private static InetAddress getLocalHostLANAddress() throws UnknownHostException {
            try {
                InetAddress candidateAddress = null;
                // 遍历所有的网络接口
                for (Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements();) {
                    NetworkInterface iface = (NetworkInterface) ifaces.nextElement();
                    // 在所有的接口下再遍历IP
                    for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements();) {
                        InetAddress inetAddr = (InetAddress) inetAddrs.nextElement();
                        if (!inetAddr.isLoopbackAddress()) {// 排除loopback类型地址
                            if (inetAddr.isSiteLocalAddress()) {
                                // 如果是site-local地址,就是它了
                                return inetAddr;
                            } else if (candidateAddress == null) {
                                // site-local类型的地址未被发现,先记录候选地址
                                candidateAddress = inetAddr;
                            }
                        }
                    }
                }
                if (candidateAddress != null) {
                    return candidateAddress;
                }
                // 如果没有发现 non-loopback地址.只能用最次选的方案
                InetAddress jdkSuppliedAddress = InetAddress.getLocalHost();
                if (jdkSuppliedAddress == null) {
                    throw new UnknownHostException("The JDK InetAddress.getLocalHost() method unexpectedly returned null.");
                }
                return jdkSuppliedAddress;
            } catch (Exception e) {
                UnknownHostException unknownHostException = new UnknownHostException(
                        "Failed to determine LAN address: " + e);
                unknownHostException.initCause(e);
                throw unknownHostException;
            }
        }
    • 127.xxx.xxx.xxx 属于"loopback" 地址,即只能你自己的本机可见,就是本机地址,比较常见的有127.0.0.1;
    • 192.168.xxx.xxx 属于private 私有地址(site local address),属于本地组织内部访问,只能在本地局域网可见。同样10.xxx.xxx.xxx、从172.16.xxx.xxx 到 172.31.xxx.xxx都是私有地址,也是属于组织内部访问;
    • 169.254.xxx.xxx 属于连接本地地址(link local IP),在单独网段可用
    • 从224.xxx.xxx.xxx 到 239.xxx.xxx.xxx 属于组播地址
    • 比较特殊的255.255.255.255 属于广播地址
    • 除此之外的地址就是点对点的可用的公开IPv4地址
    展开全文
  • Java获取本机ip地址

    千次阅读 2018-09-19 15:43:48
    定时任务涉及到多部署时,绑定IP是其中的一种解决方案。...Java用户获取IP地址的是java.net包下的NetworkInterface类。 代码比较简单,直接上 public static String getLocalIp() { Enumeration<Net...

    定时任务涉及到多机部署时,绑定IP是其中的一种解决方案。

    设定某一IP的主机执行任务,定时任务先获取本服务器的IP,和绑定的IP进行比较,匹配则执行任务。

    Java用户获取IP地址的是java.net包下的NetworkInterface类。

    代码比较简单,直接上

    public static String getLocalIp() {
            Enumeration<NetworkInterface> netInterfaces = null;
            try {
                netInterfaces = NetworkInterface.getNetworkInterfaces();
                while (netInterfaces.hasMoreElements()) {
                    NetworkInterface nif = netInterfaces.nextElement();
                    Enumeration<InetAddress> InetAddress = nif.getInetAddresses();
                    while (InetAddress.hasMoreElements()) {
                        String ip = InetAddress.nextElement().getHostAddress();
                        if (ip.startsWith("192.168")) {
                            return ip;
                        }
                    }
                }
            } catch (SocketException e) {
            }
            return "127.0.0.1";
        }

    简单说下IP的规则

    1. 127.xxx.xxx.xxx 属于"loopback" 地址,即只能你自己的本机可见,就是本机地址,比较常见的有127.0.0.1;
    2. 192.168.xxx.xxx 属于private 私有地址(site local address),属于本地组织内部访问,只能在本地局域网可见。同样10.xxx.xxx.xxx、从172.16.xxx.xxx 到 172.31.xxx.xxx都是私有地址,也是属于组织内部访问;
    3. 169.254.xxx.xxx 属于连接本地地址(link local IP),在单独网段可用;
    4. 从224.xxx.xxx.xxx 到 239.xxx.xxx.xxx 属于组播地址,比较特殊的255.255.255.255 属于广播地址;

    5. 除此之外的地址就是点对点的可用的公开IPv4地址。

    公司内部的IP是192.168开头,所以用startWith("192.168")进行匹配过滤。

    比如设定的执行IP是 192.168.100.21 ,部署的机器三台 192.168.100.21、 192.168.100.22、 192.168.100.23,则只有第一台会执行定时任务。

     

     

     

     

    展开全文
  • 主要为大家详细介绍了java如何获取本机IP地址,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java获取本机IP地址,并根据IP地址的网段,扫描局域网里面的电脑设备;import java.io.IOException;import java.net.Inet4Address;import java.net.Inet6Address;import java.net.InetAddress;import java.net.Network...

    Java获取本机IP地址,并根据IP地址的网段,扫描局域网里面的电脑设备;

    import java.io.IOException;

    import java.net.Inet4Address;

    import java.net.Inet6Address;

    import java.net.InetAddress;

    import java.net.NetworkInterface;

    import java.net.UnknownHostException;

    import java.util.Enumeration;

    import java.util.HashSet;

    import java.util.Set;

    /**

    * 类注解

    *

    * @author 尘世间迷茫的小书童

    * @date 2020年06月23日 17:31

    */

    public class Demo {

    public static void main(String[] args) {

    Set set = getIpAddress();

    if(set.size() > 0) {

    set.forEach(ip -> {

    System.out.println("本机ip: " + ip);

    });

    }

    set.remove("127.0.0.1");

    scannerNetwork(set);

    System.out.println("扫描完毕...");

    System.exit(0);

    }

    /**

    * 获取本机的IP地址(包括ipv4和ipv6)

    * 包含回环地址127.0.0.1和0:0:0:0:0:0:0:1

    */

    private static Set getIpAddress() {

    Set ipList = new HashSet<>();

    try {

    Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces();

    InetAddress ip = null;

    while (allNetInterfaces.hasMoreElements()) {

    NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();

    // 排除虚拟接口和没有启动运行的接口

    if (netInterface.isVirtual() || !netInterface.isUp()) {

    continue;

    } else {

    Enumeration addresses = netInterface.getInetAddresses();

    while (addresses.hasMoreElements()) {

    ip = addresses.nextElement();

    // if (ip != null && (ip instanceof Inet4Address || ip instanceof Inet6Address)) {

    // ipList.add(ip.getHostAddress());

    // }

    if (ip != null && (ip instanceof Inet4Address)) {

    ipList.add(ip.getHostAddress());

    }

    }

    }

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    return ipList;

    }

    /**

    * 根据本机ip扫描局域网设备

    * @param set

    */

    private static void scannerNetwork(Set set) {

    try {

    set.forEach(address -> {

    // 设置IP地址网段

    String ips = getNetworkSegment(address);

    System.out.println("开始扫描 " + ips + "网段...");

    String ip;

    InetAddress addip = null;

    // 遍历IP地址

    for (int i = 1; i < 255; i++) {

    ip = ips + i;

    try {

    addip = InetAddress.getByName(ip);

    } catch (UnknownHostException e) {

    System.out.println("找不到主机: " + ip);

    }

    // 获取登录过的设备

    if (!ip.equals(addip.getHostName())) {

    try {

    // 检查设备是否在线,其中1000ms指定的是超时时间

    boolean status = InetAddress.getByName(addip.getHostName()).isReachable(1000); // 当返回值是true时,说明host是可用的,false则不可。

    System.out.println("IP地址为:" + ip + "\t\t设备名称为: " + addip.getHostName() + "\t\t是否可用: "

    + (status ? "可用" : "不可用"));

    } catch (UnknownHostException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    });

    } catch (Exception uhe) {

    System.err.println("Unable to find: " + uhe.getLocalizedMessage());

    }

    }

    /**

    * 根据ip获取网段

    * @param ip

    * @return

    */

    private static String getNetworkSegment(String ip) {

    int startIndex = ip.lastIndexOf(".");

    return ip.substring(0, startIndex+1);

    }

    }

    来源:https://www.cnblogs.com/mxh-java/p/13187115.html

    展开全文
  • Java获取本机MAC地址IP地址主机名
  • java程序 获取ip某个主机地址 获得本机ip地址 java程序 获取ip某个主机地址 获得本机ip地址
  • Java获取本机IP地址方法。

    千次阅读 2016-06-21 11:05:54
    今天在代码中遇到了Java获取本机IP的需求,网上搜了好多,决定记录下来,方便以后使用。 /** * 获取本机IP 方法一 * 传递request 对象进来 * @param request * @return */ public static String ...
  • java获取本机IP地址

    2011-06-15 11:21:45
    此类只是简单的获取你的本机IP,如果想获取本机公网IP查看我其他的资源。
  • 获取对外的IP地址获取本机在局域网中的IP地址
  • java获取本机IP地址

    2017-09-26 11:27:06
    在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一下.突然之间很想把自己的IP地址给获取了,虽然用系统自带命令可以得到,但自己想写一个程序获取一下,到网上搜索了一下java获取本机...
  • java获取本机ip和端口

    千次阅读 2021-02-26 14:37:27
    9、172.16.17.2 和 172.16.17.130 是 2 个路由器端口 IP。连接 2 个主机。...【解题要点】Java语言支持TCP/IP协议,使应用程序可通过URL地址,在网络上的任何地方访问对象时,如同访问本机一样简单。【错解.........
  • java获取本机IP地址,非127.0.0.1

    万次阅读 2017-07-07 12:06:54
    综合了网上找的代码,整理的,Windows... private static String getHostIp(){ try{ Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces(); while (allNetInterfaces.hasMoreElements()){
  • 篇文章主要介绍了java获取当前服务器的Ip地址的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • * Get host IP address * * @return IP Address */ private static InetAddress getAddress() { try { for (Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); ...
  • java获取本机ip的方法

    千次阅读 2019-08-15 09:57:33
    通过InetAddress的实例对象包含以数字形式保存的IP地址,同时还可能包含主机名(如果使用主机名来获取InetAddress的实例,或者使用数字来构造,并且启用了反向主机名解析的功能)。InetAddress类提供了将主机名解析...
  • Java判断本机IP地址类型的方法,需要的朋友可以参考一下
  • Linux下Java获取本机IP地址

    千次阅读 2016-03-31 15:29:27
    在Linux下用InetAddress.getLocalHost()方法获取本机IP地址, 得到的结果总是:127.0.0.1。 原来这个是etc/hosts文件中的配置,并非网卡的IP地址。 后来多方寻访,终于得下以下代码, 运行后在控制台输出
  • 篇文章主要介绍了JAVA如何获取客户端IP地址和MAC地址非常具有实用价值,这里整理了详细的代码,需要的朋友可以参考下
  • 记得有一次百度的刘老师问班里的童邪如何设计一个文件下载的系统,可以保证每人每天只能下载某文件几次,然后聊天中就扯到了mac地址的话题,当时的答案是java中没有提供这方法。话说java程序员的自由度是有限的,不...
  • 主要介绍了Java 获取本机IP与MAC地址实现详解的相关资料,需要的朋友可以参考下
  • java如何获取本机IP

    2021-03-08 17:00:44
    java如何获取本机IP1 import java.net.*;23 public class Test6 {45 public static void main(String[] args) {6 // TODO Auto-generated method stub7 InetAddress ia=null;8 try {9 ...
  • java获取本机外网ip

    2015-08-13 20:23:06
    通过url链接到一个网址,该网址返回自己的ip地址(通过代理服务器访问)
  • 主要介绍了Java中使用HttpRequest获取用户真实IP地址,使用本文方法可以避免Apache、Squid、nginx等反向代理软件导致的非真实IP地址,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 253,020
精华内容 101,208
关键字:

java获取本机ip地址

java 订阅