MAC地址简单认识

MAC地址也叫物理地址、硬件地址,由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)。

IP地址与MAC地址在计算机里都是以二进制表示的,IP地址是32位的,而MAC地址则是48位的 ,通常表示为12个16进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性 。

MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。

查看本机MAC地址

打开命令窗口:win + R, 然后输入cmd,回车

输入ipconfig /all查看MAC地址

Java获取mac地址的两种方式

1.通过InetAddress对象获取

package com.chunni.mac;import org.junit.jupiter.api.Test;import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;public class MACTest {@Testpublic void test01 () throws UnknownHostException, SocketException {// 获取特定的mac地址InetAddress address = InetAddress.getByName("xxx");byte[] mac = NetworkInterface.getByInetAddress(address).getHardwareAddress();StringBuilder sb = new StringBuilder();for (int i = 0; i < mac.length; i++) {// 转为16进制sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));}System.out.println(sb.toString());}@Testpublic void test02 () throws UnknownHostException, SocketException {InetAddress[] addresses = InetAddress.getAllByName("xxx");StringBuilder sb = new StringBuilder();for (InetAddress address : addresses) {byte[] mac = NetworkInterface.getByInetAddress(address).getHardwareAddress();for (int i = 0; i < mac.length; i++) {// 转为16进制sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "\n"));}}System.out.println(sb.toString());}
}

2.通过NetworkInterface对象获取

package com.chunni.mac;import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;public class MACTest01 {public static void main(String[] args) throws SocketException {StringBuilder sb = new StringBuilder();Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();byte[] mac = null;while (allNetInterfaces.hasMoreElements()) {NetworkInterface netInterface = allNetInterfaces.nextElement();if (netInterface.isLoopback() || netInterface.isVirtual() || netInterface.isPointToPoint() || !netInterface.isUp()) {continue;} else {mac = netInterface.getHardwareAddress();if (mac != null) {for (int i = 0; i < mac.length; i++) {sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "\n"));}}}}System.out.println(sb.toString());}
}

注意:第一种方式查询所有mac地址时会有重复的,因为ipv4和ipv6都会查询一份mac地址

记Java如何获取MAC地址相关推荐

  1. Java 跨平台获取 MAC 地址的两种方法

    前言 有时我们因为软件授权或者其它需要获取主机唯一标识而需要获取用户主机的MAC地址,而本文则将介绍如何通过Java来实现跨平台获取MAC地址的两种方法,同时具体的代码也已上传到GitHub. 如果不 ...

  2. java web 获取 mac 地址_java web根据访问的ip地址获取MAC地址

    /** * 取客户端MAC地址 * @author huangwg 2014-06-26 */ public static String getMACAddress(HttpServletReques ...

  3. Java中获取MAC地址

    通过调用dos命令实现获取 import java.io.*; public class Test { public static void main(String[] args) { try { P ...

  4. java servlet 获取mac地址_Java开发网 - 请教大家几个关于servlet取ip和mac地址的问题~~!...

    //Java获得CPU序列号和网卡Mac地址 /* 利用Runtime call操作系统的命令,具体的命令取决于不同的操作系统,注意不要调用Runtime.getRuntime().exec(Stri ...

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

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

  6. java查看蓝牙mac地址_Java如何获取主机的MAC地址?

    以前,为了获取MAC地址,我们需要使用本机代码作为解决方案.在JDK 1.6中,java.net.NetworkInterface类中添加了一个新方法,该方法为getHardwareAddress() ...

  7. java 根据ip获取mac地址,java服务器端根据ip获取客户端mac地址

    java服务器端根据ip获取客户端mac地址 2014/8/20 22:01:29  475900947  程序员俱乐部  我要评论(1) 摘要://判断系统publicStringcheckSys( ...

  8. JAVA程序 通过IP地址 获取MAC地址

    转载自:https://blog.csdn.net/chwshuang/article/details/46958719 叙述 我们都知道通过在电脑上敲 cmd 后,输入ipconfig -all 来 ...

  9. java获取mac地址-屏蔽ip封mac地址

    首先要说的是:可以支持外网机器的mac地址获取.  以前弄了一个只能访问局域网. 有防火墙就访问不了, 但是这个不用担心了. 测试了百度的ip,已经可以获得mac地址 测试效果图: java通过ip获 ...

最新文章

  1. 基于 python + WebDriverAgent 的“跳一跳”小程序高分教程
  2. 在页面之间传递信息--查询字符串
  3. [离散时间信号处理学习笔记] 8. z逆变换
  4. MySQL慢查询处理之mysqldumpslow和mysqlsla
  5. 091028 工作记录
  6. 深度学习《变分自编码器》
  7. 廖雪峰JS教程学习记录----Map和Set
  8. Centos7 防火墙 ( firewalld ) 和 Selinux 一些简单操作命令
  9. ea6500 v1 刷梅林_Linksys EA6500v1刷DD-WRT及救砖方法
  10. linux 图片批量裁处理,linux下使用Image Magick批量处理图片
  11. 前端移动端端测试——显示控制台
  12. 自动驾驶创业方向有变化?如何突破技术瓶颈?
  13. 网络基础——100道面试题,你能答对多少?
  14. 旭凤锦覓虐心 恋只愿共赴鸿蒙,香蜜:锦觅与旭凤4次同床,1次酒醉灵修,1次再续前缘,1次虐心!...
  15. Stardust 案例:制作散景光斑
  16. idm+百度下载助手解决百度网盘限速
  17. 管理项目干系人时,巧用工具可以事半功倍
  18. 如何在IDEA中导入eclipse项目
  19. 从零开始的Vue学习
  20. android 连接打印机sdk,如何添加打印机sdk POS系统android应用程序

热门文章

  1. 55、室内装修材料燃烧性能等级
  2. 【产品实操】三分钟教你快速搭建字符识别CNN模型
  3. VS2017出现: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000D99016F6B0 处。
  4. 【网络原理篇2】TCP报头详解
  5. 【bzoj 4976】宝石镶嵌(贪心、高位前缀和)
  6. php接受本地图片上传,用php把本地要上传的图片经过剪切,存入数据库
  7. 装饰模式(装饰设计模式)
  8. Python打招呼函数
  9. 分巧克力——整数二分
  10. jQuery - 删除元素