java 本机局域网真实ip_Java获取本机ip地址,并扫描本机所在局域网的电脑设备
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地址,并扫描本机所在局域网的电脑设备相关推荐
- java 多网卡ip_java获取双网卡ip地址
package com.et59.License; import java.net.InterfaceAddress; import java.net.NetworkInterface; import ...
- Java | IP工具类(获取访问者的ip地址 查询IP地址)
一.IpUtil package com.java.util;import com.fasterxml.jackson.annotation.JsonInclude; import com.faste ...
- java获取客户端的IP地址工具类
java获取客户端的IP地址工具类 import java.net.InetAddress; import java.net.UnknownHostException;import javax.ser ...
- Python获取局域网内可连通的主机ip地址
使用python来获取整个局域网内可以连通的主机ip地址: 整体是思路就是 1.先获取我本机的ip地址 2.拿到我本机ip后,截取ip的最后一段,保留前一部分网段信息 3.调用cmd命令,循环从1循环 ...
- 客户机不能看到分配的dhcp_交换机配置DHCP后下挂用户获取不到IP地址或者获取缓慢...
问题描述 S5700做DHCP SERVER下接接入交换机,接入交换机连至用户侧,用户侧发现无法获取IP地址. 图1-1 组网图 处理过程 1. 按照产品文档排查DHCP SERVER配置是否有问题, ...
- 本机获取Intel AMT IP地址的例子
转自:http://software.intel.com/zh-cn/blogs/2009/02/10/intel-amt-ip/?cid=sw:51cto Intel AMT的IP地址设置有两 ...
- Java获取登录用户IP地址
Java获取登录用户IP地址 /*** @param * @return * @throws * @description * @author wqd* @date 2021/9/21 13:45*/ ...
- java ip地址类,实现获取主机名称,IP地址的类 (java)
/** *实现获取主机名称,IP地址的类. * Copyright (C) ☆苹果工作室☆ */ package com.applestudio.util; import java.net.*; pu ...
- JAVA:获取用户访问ip地址
获取用户真实IP地址:不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址: 可是,如果通过了多级反向代理的话,X-Forwarded-For的值 ...
最新文章
- python二维列表排序
- python字符串前加r、f、u、l 的区别
- ITK:创建一个二进制球结构元素
- (转)Spring Boot(六):如何优雅的使用 Mybatis
- Android dp与px的转换
- Android:学习路线总结,绝对干货
- 【转】查看linux服务器的系统信息
- 终端服务器超出了最大允许连接数
- Pytorch——Tensor合并+截取+拼接
- 使用计算机键盘的基本步骤,键盘指法练习方法
- python代理ip连接失败_遇到问题--python--爬虫--使用代理ip第二次获取代理ip失败
- ubuntu重装显卡驱动
- 如何下载央视网视频,下载视频播放花屏怎么办
- 在Harvester上安装windows sever 2012 r2
- plc无法跟计算机通信,无法与PLC通信
- 【docker系列】docker深入浅出之安装教程
- linux scp拷文件夹,linux scp远程拷贝文件及文件夹
- 2021年西式面点师(初级)考试题及西式面点师(初级)
- Xilinx GT学习
- Android APP专项电耗监控工具使用说明