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 本机局域网真实ip_Java获取本机ip地址,并扫描本机所在局域网的电脑设备相关推荐

  1. java 多网卡ip_java获取双网卡ip地址

    package com.et59.License; import java.net.InterfaceAddress; import java.net.NetworkInterface; import ...

  2. Java | IP工具类(获取访问者的ip地址 查询IP地址)

    一.IpUtil package com.java.util;import com.fasterxml.jackson.annotation.JsonInclude; import com.faste ...

  3. java获取客户端的IP地址工具类

    java获取客户端的IP地址工具类 import java.net.InetAddress; import java.net.UnknownHostException;import javax.ser ...

  4. Python获取局域网内可连通的主机ip地址

    使用python来获取整个局域网内可以连通的主机ip地址: 整体是思路就是 1.先获取我本机的ip地址 2.拿到我本机ip后,截取ip的最后一段,保留前一部分网段信息 3.调用cmd命令,循环从1循环 ...

  5. 客户机不能看到分配的dhcp_交换机配置DHCP后下挂用户获取不到IP地址或者获取缓慢...

    问题描述 S5700做DHCP SERVER下接接入交换机,接入交换机连至用户侧,用户侧发现无法获取IP地址. 图1-1 组网图 处理过程 1. 按照产品文档排查DHCP SERVER配置是否有问题, ...

  6. 本机获取Intel AMT IP地址的例子

    转自:http://software.intel.com/zh-cn/blogs/2009/02/10/intel-amt-ip/?cid=sw:51cto    Intel AMT的IP地址设置有两 ...

  7. Java获取登录用户IP地址

    Java获取登录用户IP地址 /*** @param * @return * @throws * @description * @author wqd* @date 2021/9/21 13:45*/ ...

  8. java ip地址类,实现获取主机名称,IP地址的类 (java)

    /** *实现获取主机名称,IP地址的类. * Copyright (C) ☆苹果工作室☆ */ package com.applestudio.util; import java.net.*; pu ...

  9. JAVA:获取用户访问ip地址

    获取用户真实IP地址:不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址: 可是,如果通过了多级反向代理的话,X-Forwarded-For的值 ...

最新文章

  1. python二维列表排序
  2. python字符串前加r、f、u、l 的区别
  3. ITK:创建一个二进制球结构元素
  4. (转)Spring Boot(六):如何优雅的使用 Mybatis
  5. Android dp与px的转换
  6. Android:学习路线总结,绝对干货
  7. 【转】查看linux服务器的系统信息
  8. 终端服务器超出了最大允许连接数
  9. Pytorch——Tensor合并+截取+拼接
  10. 使用计算机键盘的基本步骤,键盘指法练习方法
  11. python代理ip连接失败_遇到问题--python--爬虫--使用代理ip第二次获取代理ip失败
  12. ubuntu重装显卡驱动
  13. 如何下载央视网视频,下载视频播放花屏怎么办
  14. 在Harvester上安装windows sever 2012 r2
  15. plc无法跟计算机通信,无法与PLC通信
  16. 【docker系列】docker深入浅出之安装教程
  17. linux scp拷文件夹,linux scp远程拷贝文件及文件夹
  18. 2021年西式面点师(初级)考试题及西式面点师(初级)
  19. Xilinx GT学习
  20. Android APP专项电耗监控工具使用说明

热门文章

  1. MongoDB修改文档
  2. 数据研发岗位常见面试题
  3. 左支座零件的机械加工工艺规程及工艺装备设计(设计说明书+CAD图纸+任务书+工序卡+过程卡+文献+翻译)
  4. hadoop实现自动打包并提交到集群(完全自动)
  5. OPPO R11 R11plus系列 解锁BootLoader ROOT Xposed 你的手机你做主
  6. ELF文件中的各个节区
  7. ubuntu安装php5.4
  8. pytz 的所有函数
  9. Excel函数公式大全—HLOOKUP函数
  10. oppo三面面经,现已拿到offer。十月份我快乐了,你呢?