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 equals(Object obj)
          将此对象与指定对象比较。
※※※ static NetworkInterface getByInetAddress(InetAddress addr)

一个便捷方法,搜索绑定了指定 Internet 协议 (IP) 地址的网络接口。

※※※ static NetworkInterface getByName(String name)

搜索具有指定名称的网络接口。

 String getDisplayName()

获取此网络接口的显示名称。

 byte[] getHardwareAddress()

如果存在硬件地址并可以使用给定的当前权限访问,则返回该硬件地址(通常是 MAC)。

※※※ Enumeration<InetAddress> getInetAddresses()

一个便捷方法,返回一个具有绑定到此网络接口全部或部分 InetAddress 的 Enumeration。

※※※ List<InterfaceAddress> getInterfaceAddresses()

获取此网络接口的全部或部分 InterfaceAddresses 所组成的列表。

 int getMTU()

返回此接口的最大传输单元(Maximum Transmission Unit,MTU)。

 String getName()

获取此网络接口的名称。


※※※

static Enumeration<NetworkInterface>

getNetworkInterfaces()

返回此机器上的所有接口。

 NetworkInterface getParent()

如果此接口是子接口,则返回它的父 NetworkInterface;如果它是物理(非虚拟)接口或没有父接口,则返回
null

※※※ Enumeration<NetworkInterface> getSubInterfaces()

获取具有连接到此网络接口的所有子接口(也称虚拟接口)的 Enumeration。

 int hashCode()

返回该对象的哈希码值。

 boolean isLoopback()

返回网络接口是否是回送接口。

 boolean isPointToPoint()

返回网络接口是否是点对点接口。

 boolean isUp()

返回网络接口是否已经开启并运行。

 boolean isVirtual()

返回此接口是否是虚拟接口(也称为子接口)。

 boolean supportsMulticast()

返回网络接口是否支持多址广播。

 String toString()

返回该对象的字符串表示。

  需要特别关注的是:

  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 equals(Object obj)
          将此对象与指定对象比较。
 InetAddress getAddress()

返回此地址的 InetAddress

 InetAddress getBroadcast()

返回此 InterfaceAddress 广播地址的 InetAddress

 short getNetworkPrefixLength()

返回此地址的网络前缀长度。

 int hashCode()

返回此接口地址的哈希码。

 String toString()

将此接口地址转换为 String

  

时间: 2024-10-13 06:02:36

Java获取本地环境所有网卡及每个网卡的所有网络配置的相关文章

关于Java获取本地服务器IP的问题

Java获取本地服务器IP,我们最简单的写法: import java.net.InetAddress; public class CatchIp{ public static void main(String[] args) { try { // 获取IP地址 String ip = InetAddress.getLocalHost().getHostAddress(); System.out.println("IP地址:"+ip); } catch (Exception e) {

关于java获取本地ip的几种方法

关于java获取本地ip的几种方法1.获取本地ip的方法 System.out.println(InetAddress.getLocalHost().getHostAddress()); 2.域名解析ip的方法 System.out.println(InetAddress.getByName("www.sina.com.cn")); 3.获取本地出口ip的方法(局域网NAT或本地找交换机出口ip的方法) 建立通讯TCP,telnet,mina通讯等. Socket client = n

Java获取服务器环境

package com.rapido.utils; import java.util.Properties; /** * 获取服务器环境信息 * @author X-rapido * */ public class SystemDataUtil { public static Properties getSystemProperties() { Properties props = System.getProperties(); // 系统属性 return props; } public st

大数据之环境准备系列 ——第二篇 新装VMware 虚拟机 网络配置(NAT模式)

新安装虚拟机,需要配置网络环境,才可以使用ssh客户端(如xshell)远程登录 和 虚拟机访问Internet. 一. WMware 软件配置 WMware版本号:11.0.0 build-2305329 1  进入虚拟网络配置界面 菜单栏,点击编辑,之后点击 虚拟网络配置器(N),进入虚拟网络配置界面 2 配置NAT网卡 (1)从上部列表选择 类型为NAT 模式的虚拟网卡 (2)VMnet信息 部分 点击 NAT 设置,设置网关IP (3)配置虚拟网络编辑窗口其他内容,子网IP 和 子网掩码

java获取本地操作系统进程列表

package com.wa.xwolf.sblog.util; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.InputStreamReader; import java.nio.charset.Charset; public class ProcessUtil { public static void main(String[] args) throws Exception

java 获取本地电脑的分辨率代码

1.代码: java.awt.Toolkit tk=java.awt.Toolkit.getDefaultToolkit();       java.awt.Dimension screenSize=tk.getScreenSize(); int screenWidth=screenSize.width;              //System.out.println(screenWidth);//1440       int screenHeight=screenSize.height; 

Java 获取当前环境Windows/Linux 真实IP

public static String getCurrentIp() { try { Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces(); while (networkInterfaces.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) networkInterfaces.nextEleme

Java获取操作系统的本机ip和Mac地址

获取局域网ip和mac(如果电脑没有直接连接外网),否则获取公网ip 通过第三放获取公网ip package org.twt.zipjar.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.Inet4Address; import java.net.InetAdd

[转] java获取hostIp和hostName

[From] https://www.cnblogs.com/huluyisheng/p/6867370.html InetAddress的构造函数不是公开的(public),所以需要通过它提供的静态方法来获取,有以下的方法: static InetAddress[] getAllByName(String host)static InetAddress getByAddress(byte[] addr)static InetAddress getByAddress(String host,by