java获取所有网卡信息_Java获取本地环境所有网卡及每个网卡的所有网络配置

一个网卡(不太标准,应该叫做一个网络接口,一个网卡是可以拥有多个网络接口的,如SoftAP)拥有一套网络配置:ip地址,子网掩码,网关,dns等等。

自java 1.6开始,提供了访问网络配置的一些接口:

java.net.NetworkInterface(自1.4开始)

此类表示一个由名称和分配给此接口的 IP 地址列表组成的网络接口。它用于标识加入多播组的本地接口。 接口通常是按名称(如 "le0")区分的。

java.net.InterfaceAddress(自1.6开始)

此类表示网络接口地址。简言之,对于 IPv4 地址,是指 IP 地址、子网掩码和广播地址。对于 IPv6 地址,是指 IP 地址和网络前缀长度。

java.net.InetAddress与子类Inet4Address、Inet6Address

地址分为组播地址,回送地址,单播地址(真正取本机IP时用这个取)

其中方法详解:java.net.NetworkInterface

boolean

byte[]

InterfaceAddresses 所组成的列表。

int

null。

int

boolean

boolean

boolean

boolean

boolean

需要特别关注的是:

1、getNetworkInterfaces(),此静态方法用去获取所有本机的NetworkInterface,这个是获取地址的第一步,通过遍历此返回值的枚举,来获取本机所有网卡的地址。

2、其余的非静态方法,都是一个NetworkInterface实例的方法。

3、取到实例之后,可以判断是否是回送地址,是的情况下可排除。是否是虚拟接口,是的情况下可排除。是否开启并运行,否的情况下可排除。

4、一个物理网卡下,可有多个虚拟接口,有两个方法就是获取这些虚拟接口的。

5、获取网卡名(如Linux下的eth0)getDisplayName(),getName(). 获取mac地址:getHardwareAddress()

6、取InterfaceAddress实例。getInterfaceAddresses() ,返回一个InterfaceAddress的List,是该NetworkInterface下所有的InterfaceAddress。

7、若想跳过取InterfaceAddress直接取IP地址,可调用getInetAddresses() 方法,返回的是一个InetAddress的枚举。

InterfaceAddress

boolean

InetAddress。

int

String。

原文:http://www.cnblogs.com/guangshan/p/4712550.html

Java获取Linux系统中指定网卡信息,可以通过执行系统命令并解析命令的输出结果来实现。一个常用的方法是使用`Runtime.getRuntime().exec()`方法执行`ifconfig`命令(或在较新的系统中可能是`ip`命令),然后读取该命令的输出并解析相关信息。 以下是一个简单的例子,演示如何使用Java执行`ifconfig`命令并获取指定网卡信息: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class NetworkInfo { public static void main(String[] args) { String interfaceName = "eth0"; // 假设我们要获取名为eth0的网卡信息 try { // 执行ifconfig命令获取网卡信息 Process process = Runtime.getRuntime().exec("ifconfig " + interfaceName); // 获取命令执行的输出 InputStream inputStream = process.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; // 逐行读取输出内容 while ((line = reader.readLine()) != null) { // 打印出每一行的信息 System.out.println(line); } reader.close(); inputStream.close(); // 等待命令执行结束 process.waitFor(); // 处理获取到的信息... } catch (IOException | InterruptedException e) { e.printStackTrace(); } } } ``` 这个例子中,我们尝试获取名为`eth0`的网卡信息。请注意,为了获取最新的网卡信息,可能需要root权限来执行`ifconfig`或`ip`命令。 需要注意的是,由于安全和兼容性的问题,直接在Java程序中执行系统命令并不是一种推荐的做法。更好的做法是使用操作系统提供的API或者第三方库(例如JNA - Java Native Access)来获取网络接口信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值