JAVA获得网卡MAC地址

获取网卡信息以及网卡类型 用windows sdk提供的API函数GetAdaptersInfo()可以获得本机所有网卡的网卡名、网卡描述、网卡MAC地址、网卡IP、网卡类型等信息。 立即下载

package test;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.ParseException;
import java.util.StringTokenizer;

public final class NetworkUtils {

 private final static int MACADDR_LENGTH = 17;
 private final static String WIN_OSNAME = "Windows";
 private final static String LINUX_OSNAME = "Linux";
 private final static String OSX_OSNAME = "Mac OS X";
 private final static String MACADDR_REG_EXP = "^[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}$";
 private final static String WIN_MACADDR_EXEC = "ipconfig /all";
 private final static String LINUX_MACADDR_EXEC = "ifconfig";
 private final static String OSX_MACADDR_EXEC = "ifconfig";

 public final static String getMacAddress() throws IOException{
  String os = System.getProperty("os.name");
  try{
   if(os.startsWith(WIN_OSNAME)){
    return windowsParseMacAddress(windowsIpConfigCommand());
   }else if(os.startsWith(LINUX_OSNAME)){
    return linuxParseMacAddress(linuxRunIfConfigCommand());
   }else if(os.startsWith(OSX_OSNAME)) {
    return osxParseMacAddress(osxRunIfConfigCommand());
   }else{
    throw new IOException("OS not supported : " + os);
   }
  }catch(Exception e){
   e.printStackTrace();
   throw new IOException(e.getMessage());
  }
 }
 
 /**
  * OSX stuff
  */
 private final static String osxParseMacAddress(String ipConfigOutput) throws ParseException{
  String localHost = null;
  try {
  localHost = InetAddress.getLocalHost().getHostAddress();
  } catch(java.net.UnknownHostException ex) {
  ex.printStackTrace();
  throw new ParseException(ex.getMessage(), 0);
  }
  StringTokenizer tokenizer = new StringTokenizer(ipConfigOutput, "/n");
  String lastMacAddress = null;
  while(tokenizer.hasMoreTokens()) {
  String line = tokenizer.nextToken().trim();
  boolean containsLocalHost = line.indexOf(localHost) >= 0;
  //see if line contains IP address
  if(containsLocalHost && lastMacAddress != null){
   return lastMacAddress;
  }
  //see if line contains MAC address
  int macAddressPosition = line.indexOf("ether");
  if(macAddressPosition != 0) {
   continue;
  }
  String macAddressCandidate = line.substring(macAddressPosition + 6).trim();
  if(osxIsMacAddress(macAddressCandidate)) {
   lastMacAddress = macAddressCandidate;
   continue;
  }
  }
  ParseException ex = new ParseException
  ("cannot read MAC address for " + localHost + " from [" + ipConfigOutput + "]", 0);
  ex.printStackTrace();
  throw ex;

 }
 
 private final static boolean osxIsMacAddress(String macAddressCandidate){
  if(macAddressCandidate.length() != MACADDR_LENGTH){
   return false;
  }
  if(!macAddressCandidate.matches(MACADDR_REG_EXP)){
   return false;
  }
  return true;
 }
 
 private final static String osxRunIfConfigCommand() throws IOException{
  Process p = Runtime.getRuntime().exec(OSX_MACADDR_EXEC);
  InputStream stdoutStream = new BufferedInputStream(p.getInputStream());
  StringBuffer buffer = new StringBuffer();
  for(;;){
   int c = stdoutStream.read();
   if(c == -1){
    break;
   }
   buffer.append((char) c);
  }
  String outputText = buffer.toString();
  stdoutStream.close();
  return outputText;
 }
 
 /**
  * Linux stuff
  */
 private final static String linuxParseMacAddress(String ipConfigOutput) throws ParseException{
  String localHost = null;
  try {
   localHost = InetAddress.getLocalHost().getHostAddress();
  } catch (UnknownHostException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   throw new ParseException(e.getMessage(),0);
  }
  StringTokenizer tokenizer = new StringTokenizer(ipConfigOutput,"/n");
  String lastMacAddress = null;
  while(tokenizer.hasMoreTokens()){
   String line = tokenizer.nextToken().trim();
   boolean containsLocalHost = line.indexOf(localHost) >= 0;
   //see if line contains IP address
   if(containsLocalHost && lastMacAddress != null){
    return lastMacAddress;
   }
   //see if line contains MAC address
   int macAddressPosition = line.indexOf("HWaddr");
   if(macAddressPosition <= 0){
    continue;
   }
   String macAddressCandidate = line.substring(macAddressPosition + 6).trim();
   if(linuxIsMacAddress(macAddressCandidate)){
    lastMacAddress = macAddressCandidate;
    continue;
   }
  }
  ParseException ex = new ParseException("cannot read MAC address for " + localHost + " from [" + ipConfigOutput + "]",0);
  ex.printStackTrace();
  throw ex;
 }
 
 private final static boolean linuxIsMacAddress(String macAddressCandidate){
  if(macAddressCandidate.length() != MACADDR_LENGTH){
   return false;
  }
  if(!macAddressCandidate.matches(MACADDR_REG_EXP)){
   return false;
  }
  return true;
 }
 
 private final static String linuxRunIfConfigCommand() throws IOException{
  Process p = Runtime.getRuntime().exec(LINUX_MACADDR_EXEC);
  InputStream stdoutStream = new BufferedInputStream(p.getInputStream());
  StringBuffer buffer = new StringBuffer();
  for(;;){
   int c = stdoutStream.read();
   if(c == -1){
    break;
   }
   buffer.append((char)c);
  }
  String outputText = buffer.toString();
  stdoutStream.close();
  return outputText;
 }
 
 /**
  * Windows stuff
  */
 private final static String windowsParseMacAddress(String ipConfigOutput) throws ParseException{
  String localHost = null;
  try {
   localHost = InetAddress.getLocalHost().getHostAddress();
  } catch (UnknownHostException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   throw new ParseException(e.getMessage(),0);
  }
  StringTokenizer tokenizer = new StringTokenizer(ipConfigOutput,"/n");
  String lastMacAddress = null;
  while(tokenizer.hasMoreTokens()){
   String line = tokenizer.nextToken().trim();
   //see if line contains IP address
   if(line.endsWith(localHost) && lastMacAddress != null){
    return lastMacAddress;
   }
   //see if line contains MAC address
   int macAddressPosition = line.indexOf(":");
   if(macAddressPosition <= 0){
    continue;
   }
   String macAddressCandidate = line.substring(macAddressPosition + 1).trim();
   if(windowsIsMacAddress(macAddressCandidate)){
    lastMacAddress = macAddressCandidate;
    continue;
   }
  }
  ParseException ex = new ParseException("cannot read MAC address from [" + ipConfigOutput + "]",0);
  ex.printStackTrace();
  throw ex;
 }
 
 private final static boolean windowsIsMacAddress(String macAddressCandidate){
  if(macAddressCandidate.length() != MACADDR_LENGTH){
   return false;
  }
  if(!macAddressCandidate.matches(MACADDR_REG_EXP)){
   return false;
  }
  return true;
 }
 
 private final static String windowsIpConfigCommand() throws IOException {
  Process p = Runtime.getRuntime().exec(WIN_MACADDR_EXEC);
  InputStream stdoutStream = new BufferedInputStream(p.getInputStream());
  StringBuffer buffer = new StringBuffer();
  for(;;){
   int c = stdoutStream.read();
   if(c == -1){
    break;
   }
   buffer.append((char)c);
  }
  String outputText = buffer.toString();
  stdoutStream.close();
  return outputText;
 }
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  try{
   
   System.out.println(" MAC ADDRESS");
   System.out.println(" OS       :" + System.getProperty("os.name"));
   System.out.println(" IP/Localhost : " + InetAddress.getLocalHost().getHostAddress());
   System.out.println(" MAC Address : " + getMacAddress());
   
  }catch(Throwable t){
   t.printStackTrace();
  }
 }
 
 

}
 

怎么在JAVA中获取网络连接详细信息 怎么在JAVA中获取网络连接详细信息,通过System.getProperty类来获得系统参数! 立即下载

相关推荐

TMS-EEG数据预处理:eeglab工具包TESA(一)

b. 自动选择:Tools -> Reject data epochs -> Reject by probability,然后进行Plot -> channel,进行删除。TMS-EEG(经颅磁刺激-脑电图)是一种结合了TMS和EEG记录的技术,这种技术允许研究者在非侵入的情况下探测大脑环路,评估大脑的兴奋性和连通性等皮层特性。对移除脉冲伪迹的数据进行插值:Tools ->TESA -> Interpolate removed data;插值后,画图查看:数据会有数值;

weixin_43604817的博客 1494

mamp pro mac搭建好以后,localhost可以访问 ip地址跟127.0.0.1不能访问

#吧下面的地方注释掉就可以了 ~~~![在这里插入图片描述](https://img-blog.csdnimg.cn/20200421172010637.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA5MTQ4ODA=,size...

u010914880的博客 3647

保姆级教程:在Ubuntu 22.04上从零安装SUMO并运行第一个交通仿真

本教程详细介绍了在Ubuntu 22.04系统上从零安装SUMO交通仿真软件并运行第一个仿真的完整流程。涵盖环境准备、PPA源安装、核心组件验证、首次仿真案例运行以及进阶配置技巧,特别针对netedit路网编辑器和地图格式转换等实用工具进行重点讲解,帮助用户快速掌握SUMO在交通仿真领域的应用。

weixin_30546189的博客 422

java 获得网卡MAC地址

前阵子看到一篇文件,JAVA得到网卡物理地址(windows和Linux) ,当时觉得挺好,后来正好项目里有需要,就用了它,但好像有点问题.因为它是采用固定字符串搜索(if (line.indexOf("Physical Address") != -1) )获得MAC 地址的,后来在应用时出了问题,因为没有"Physical Address"这一项.后来在外网在查查了一下,后来发现老外有写一

lanchengxiaoxiao的专栏 1168

【AI学习笔记】Coze平台实现将Excel文档批量导入数据库全过程

通过Coze平台实现将Excel文档批量导入数据库的全流程,包括B站现有参考教程全方位解读、自己实操的一些BUG解决过程,以及一些疑难问题的探索。

bailichen800的博客 8825

【实战】——零代码玩转Supervisely人像分割:从标注到模型训练的数据流水线搭建

本文详细介绍了如何零代码使用Supervisely平台搭建人像分割数据流水线,从智能标注到数据集格式转换,再到模型训练与优化。Supervisely的智能标注工具和协作功能大幅提升了人像分割项目的效率,特别适合视频会议背景虚化、虚拟试衣等应用场景。

weixin_30694389的博客 416

获得网卡MAC地址java类

package com.test; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; import java.util.StringTokenizer; class SystemMacAd...

风心 138

光伏发电系统模拟及其发电预测开源python工具pvlib

本文介绍光伏发电系统模拟及其发电预测开源python工具pvlib,以及举例介绍获取辐照度方法、光伏发电预测思路。

肖永威的专栏 1万+

Java获得CPU序列号和网卡Mac地址

//Java获得CPU序列号和网卡Mac地址/*利用Runtime call操作系统的命令,具体的命令取决于不同的操作系统,注意不要调用Runtime.getRuntime().exec(String)接口,要用Runtime.getRuntime().exec(String[])这个接口,不然复杂命令的执行会有问题。例子如下(拿cp

好好学习 天天向上 1005

Tribon Vitesse开发教程(一)

Tribon Vitesse简介 Tribon Vitesse是Tribon提供给Python编程语言的编程接口,它是一系列的API。使用Python的语法调用这些API,结合Python语言自身的语法生成的程序叫做Vitesse程序。Vitesse是法语“速度”的意思,读作“为戴斯”。使用Tribon Vitesse可以直接访问Tribon产品信息模型和使用Tribon应用程序的功能,以控制设计

forevermemory的专栏 2593

滑块逆向及流程分析

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

pyzzd的博客 8007

java 客户端mac地址_Java/JSP获得客户端网卡MAC地址的三种方法解析

java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种。1、通过命令方式,在客户端执行Ipconfig 等等。(java/jsp)2、通过ActiveX的方法。(jsp)3、通过向137的端口发送查询指令的方法。(java/jsp)简介:第一种方法,在真正用到时候不知道为什么获得mac地址的指令阻塞了,不往下继续执行。而且速度是这三种方法中最慢的一种。代码如下:String sip=""...

weixin_39859055的博客 431

RK3588平台开发系列讲解(项目篇)常见模型结构

📢 AI 模型常采用人工神经网络来模拟人脑神经的记忆和处理信号的能力。常见的人工神经网络类型有深度神经网络(Deep Neural Network,DNN)、卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)等。

内核笔记 1759

java 网卡物理地址_Java/JSP获得客户端网卡MAC地址的三种方法解析

从网上查找资料java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种。1、通过命令方式,在客户端执行Ipconfig 等等2、通过ActiveX的方法3、通过向137的端口发送查询指令的方法简介:第一种方法,在真正用到时候不知道为什么获得mac地址的指令阻塞了,不往下继续执行。而且速度是这三种方法中最慢的一种。代码如下:String sip="";String smac="";sip =...

weixin_28923083的博客 347

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【Java】Java/JSP获得客户端网卡MAC地址的三种方法解析

从网上查找资料java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种。1、通过命令方式,在客户端执行Ipconfig/all2、通过ActiveX的方法3、通过向137的端口发送查询指令的方法  第一种方法,在真正用到时候不知道为什么获得mac地址的指令阻塞了,不往下继续执行。而且速度是这三种方法中最慢的一种。代码如下:String sip="";

wudifeiyun的专栏 526

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java/JSP获得客户端网卡MAC地址的三种方法解析

java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种。 1、通过命令方式,在客户端执行Ipconfig 等等。(java/jsp) 2、通过ActiveX的方法。(jsp) 3、通过向137的端口发送查询指令的方法。(java/jsp) 简介: 第一种方法,在真正用到时候不知道为什么获得mac地址的指令阻塞了,不往下继续执行。而且速度是这三种方法中最慢的一种。 代码如...

weixin_44699208的博客 304

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java/JSP获得客户端网卡MAC地址的方法解析

、通过命令方式,在客户端执行Ipconfig 等等 2、通过ActiveX的方法 3、通过向137的端口发送查询指令的方法 简介: 第一种方法,在真正用到时候不知道为什么获得mac地址的指令阻塞了,不往下继续执行。而且速度是这三种方法中最慢的一种。 代码如下: String sip=""; String smac=""; sip = re...

菜菜 199

Java/JSP获得客户端网卡MAC地址的三种方法解析(附:获得真实IP)

Java/JSP获得客户端网卡MAC地址的三种方法解析 从网上查找资料java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种。 1、通过命令方式,在客户端执行Ipconfig 等等。(java/jsp) 2、通过ActiveX的方法。(jsp) 3、通过向137的端口发送查询指令的方法。(java/jsp)   简介: 第一种方法,在真正用到时候不知道为什么获得ma

cactusz的博客 1883

java读取双网卡mac地址_用VBS方法获得双网卡或多网卡的IP,MAC,计算机名方法

'=======================================================''----------- 2014.11.10 by zhang.xh QQ:857372828''=========================================================Dim str0,str1,str2,str3strCompute...

weixin_32301557的博客 318
上一篇: struts2.0中使用图形验证码
下一篇: 一刻钟精通正则表达式
beyond429
博客等级 码龄22年 10粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值