场景

Networklnterface类表示一个由名称和分配给此接口的IP地址列表组成的网络接口,也
就是Networklnterface类包含网络接口名称与IP地址列表。该类提供访问网卡设备的相关
信息,如可以获取网卡名称、IP地址和子网掩码等。

想要取得Network Interface对象,就必须要通过Networklnterface类的public static
Enumeration<Networklnterface> getNetworkInterfaces()方法,该方法的返回值是泛型Enumeration<Networkinterface>,作用是返回此机器上的所有接口。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

public byte[] getHardwareAddress()方法的作用:获得网卡的硬件地址。

什么是硬件地址?

硬件地址也称为物理地址,或MAC (Media Access Control,媒体访问控制)。它用来定
义网络设备的位置,也是网卡设备的唯一ID,采用十六进制表示,一共48位。MAC地址
包含由IEEE的注册管理机构RA负责给不同厂商分配的唯一标识,因此,正规厂商出厂的
网卡的MAC地址永远不会出现重复。
物理地址、MAC地址和硬件地址,这三者的含义是一样的。
可以在CMD中输人“ipconfig -all”来查看物理地址。

设备的物理地址是十进制的,真正的物理地
址是十六进制的,将这些值转换成十六进制

首先新建一个Java项目并新建一个Main方法

package com.badao;import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;public class Main {public static void main(String[] args) throws SocketException {// write your code hereEnumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();if (networkInterfaces != null) {while (networkInterfaces.hasMoreElements()) {NetworkInterface networkInterface = networkInterfaces.nextElement();System.out.println("设备在操作系统中显示的名称: " + networkInterface.getDisplayName());System.out.println("网络设备在操作系统中的名称: " + networkInterface.getName());System.out.println("网络接口是否已经开启并正常工作: " + networkInterface.isUp());System.out.println("网络接口的最大传输单元(MTU): " + networkInterface.getMTU());System.out.println("网络接口是是否是环回接口: " + networkInterface.isLoopback());Enumeration<InetAddress> inetAddressesList = networkInterface.getInetAddresses();System.out.print("网络接口的硬件地址(MAC地址): ");byte[] hardwareAddress = networkInterface.getHardwareAddress();if (hardwareAddress != null && hardwareAddress.length > 0) {System.out.println(bytesToHexMac(hardwareAddress));} else {System.out.println(networkInterface.getHardwareAddress());}while (inetAddressesList.hasMoreElements()) {InetAddress address = inetAddressesList.nextElement();System.out.println("主机地址: " + address.getHostAddress());}System.out.println("=============分隔=============");}}}public static String bytesToHexMac(byte[] bytes) {StringBuilder buf = new StringBuilder(bytes.length * 2);for (int i = 0; i < bytes.length; i++) {buf.append(String.format("%02x", new Integer(bytes[i] & 0xff)));if (i != bytes.length - 1) {buf.append(":");}}return buf.toString();}
}

然后运行该main方法

可以看到控制台输出和在命令行中获取的一致的ip的物理地址

Java中通过NetworkInterface获取主机地址和物理地址等相关推荐

  1. java 根据ip获取mac地址_利用java如何根据IP获取mac地址

    利用java如何根据IP获取mac地址 发布时间:2020-11-25 15:49:42 来源:亿速云 阅读:74 作者:Leah 利用java如何根据IP获取mac地址?针对这个问题,这篇文章详细介 ...

  2. Java 中是如何获取 IP 属地的

    细心的小伙伴可能会发现,抖音新上线了 IP 属地的功能,小伙伴在发表动态.发表评论以及聊天的时候,都会显示自己的 IP 属地信息 下面,我就来讲讲,Java 中是如何获取 IP 属地的,主要分为以下几 ...

  3. Java 通过Request请求获取IP地址

    Java 通过Request请求获取IP地址 项目需要将不同省份的用户,展示不同内容,所以需要通过Request请求获取IP地址. 先来贴代码, 如果你要在生产环境使用就直接拿去用吧,我这边已经上线了 ...

  4. java获取项目在tomcat中路径_java获取项目地址或tomcat绝对地址

    在java项目中获取文件的路径,不管是相对路径还是绝对路径,其本质都是通过绝对路径去寻找. 获取项目地址 request.getSession().getServletContext().getRea ...

  5. 关于JAVA中使用nbtstat获取地址报错

    在JAVA后台想要通过ip地址获得局域网内客户机的MAC地址 最初也是从网上找的例子,用到这条语句: Process process = Runtime.getRuntime().exec(" ...

  6. Java 中几种获取文件路径的方式

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1. 前言 Java 开 ...

  7. java中nonce_java如何获取微信timestamp,nonceStr,signature参数

    java如何获取微信timestamp,nonceStr,signature参数 发布时间:2021-01-18 11:46:12 来源:亿速云 阅读:57 作者:小新 这篇文章主要介绍java如何获 ...

  8. java获取列族的列_在cassandra-cli中如何获取表中的所有列名以及如何在java中使用hector获取它?...

    我正在尝试获取列名,但无法获得仅列名称. 在cli我执行命令描述表节点,它返回结果: CREATE TABLE nodes ( key text PRIMARY KEY, id text, score ...

  9. 深入理解Java中的String(原地址https://www.cnblogs.com/xiaoxi/p/6036701.html)

    深入理解Java中的String 一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class Stringimplem ...

最新文章

  1. 迷你信使(MM)的软件设计界面
  2. Part2_2 Bs4常见操作
  3. 湖南工程学院计算机毕业设计,湖南工程学院毕业设计模板.docx
  4. 一个分支强制替代另一个分支
  5. 【加权并查集】bzoj 4602 齿轮
  6. junit4和junit5_JUnit5 TestSuite替代
  7. const与static的区别
  8. c语言使用位运算符包含头文件,C语言的运算符
  9. redis源码剖析(7):基础数据结构quicklist
  10. SSM整合——简单的小项目实战
  11. 三大主流前端框架介绍VUE 、React、Angular
  12. 【高等数学】空间直线的参数方程详解以及其参数t的意义
  13. R语言apply族函数详解
  14. Ubuntu 18.04 桌面美化全攻略
  15. 【原创】新韭菜日记20---在国内股市亏钱的最大原因就是杠杆和割肉
  16. 1-1 Java基础和编程概述
  17. iOS小技能:iOS15崩溃排查技巧(symbolicatecrash符号化分析问题、导出和隐藏符号)
  18. 今天向大家推荐一款国产良心工具包 -- Hutool,让你的java变得更甜
  19. Python实现办公自动化
  20. 如何利用redis 实现分布式项目枷锁功能

热门文章

  1. 集合之TreeMap源码分析,简单介绍什么是红黑树,SortedMap和NavigableMap之间的关系和区别
  2. 常用的设计模式——观察者设计模式?和发布者-订阅者设计模式的区别
  3. JVM命令查看与设置参数
  4. SpringBoot实现Redis分布式锁
  5. folderutils.java_值得分享的超全文件工具类FileUtil
  6. 关于source insight 置顶窗口或者处于前台挡住窗口解决办法
  7. 一些debug常用的魔法数值
  8. qemu debug linux内核,qemu调试linux内核
  9. python访问数据库日志文件_python利用inotify实现把nginx日志实时写入数据库
  10. mysql relay bin 主库_MySQL主库binlog(master-log)与从库relay-log关系代码详解