写在前面

通常所说查询本机mac地址是以以太网为准的, 也就是网线那个口..这种描述略捞.

但是通过java的getHostAddress获取ip以及getHardwareAddress()方法获取mac时, 需要将网络适配器中多余的连接禁用.

像我笔记本上这种, 打开网络连接发现有好多连接(安装了虚拟机的原因), 此时若不禁用虚拟机的连接即使插上了网线, 执行程序查询出来的还是虚拟机的ip和mac地址.

通过测试有以下结果:

1.连接无线网, 插上网线, 同时启用虚拟机网络连接时, 查询出来的是无线网的ip和mac

2.断开无线网, 启用虚拟机网络连接, 插上网线, 查询出来的是虚拟机的ip和mac

3.断开无线网, 禁用虚拟机网络连接, 插上网线,, 查询出来的才是以太网 本地连接3的ip和mac

下图是本机的网络连接和通过ipconfig/all命令查询出来的结果(虚拟机连接尚未禁用时的截图)

测试代码:

package com.ppms.utils;

import java.net.InetAddress;
import java.net.NetworkInterface; /**
* Created by liangyadong on 2018/7/26 0026.
*/
public class SystemInfo {
public static void main(String[] args) {
System.out.println("Host Name : "+getSystemName());
System.out.println("Host IP : "+getIPAddress());
System.out.println("Host Address : "+getMAC());
} /**
* Method for get System Name
* @return Host name
*/
private static String getSystemName(){
try{
InetAddress inetaddress=InetAddress.getLocalHost(); //Get LocalHost refrence
String name = inetaddress.getHostName(); //Get Host Name
return name; //return Host Name
}
catch(Exception E){
E.printStackTrace(); //print Exception StackTrace
return null;
}
} /**
* method to get Host IP
* @return Host IP Address
*/
private static String getIPAddress(){
try{
InetAddress inetaddress=InetAddress.getLocalHost(); //Get LocalHost refrence
String ip = inetaddress.getHostAddress(); // Get Host IP Address
return ip; // return IP Address
}
catch(Exception E){
E.printStackTrace(); //print Exception StackTrace
return null;
} } /**
* method to get Host Mac Address
* @return Mac Address
*/
private static String getMAC(){
try{
InetAddress inetaddress=InetAddress.getLocalHost(); //Get LocalHost refrence //get Network interface Refrence by InetAddress Refrence
NetworkInterface network = NetworkInterface.getByInetAddress(inetaddress);
byte[] macArray = network.getHardwareAddress(); //get Harware address Array
StringBuilder str = new StringBuilder(); // Convert Array to String
for (int i = 0; i < macArray.length; i++) {
str.append(String.format("%02X%s", macArray[i], (i < macArray.length - 1) ? "-" : ""));
}
String macAddress=str.toString(); return macAddress; //return MAc Address
}
catch(Exception E){
E.printStackTrace(); //print Exception StackTrace
return null;
}
}
}

执行结果:

Host Name : personal
Host IP : 192.168.1.115
Host Address : F0-1E-34-11-DD-66

可以测试一下~

java 获取计算机名称, ip, mac地址的更多相关文章

  1. Java获取主板序列号、MAC地址、CPU序列号工具类

    import java.io.File; import java.io.FileWriter; import java.io.BufferedReader; import java.io.IOExce ...

  2. JAVA获取本机的MAC地址

    /** * 获取本机的Mac地址 * @return */ public String getMac() { InetAddress ia; byte[] mac = null; try { // 获 ...

  3. IP地址、计算机名称、MAC地址如何获取

    以下的操作都在“命令提示窗口”中操作. 已知IP,如何获得计算机名称 方法(1): 使用ping -i ip地址 例如已知地址为192.168.1.168. 那么使用ping -i 192.168.1 ...

  4. JAVA获取计算机的IP、名称、操作系统等信息

    [java] view plaincopyprint? import java.io.BufferedReader; import java.io.InputStream; import java.i ...

  5. java获取硬盘ID以及MAC地址

    http://blog.csdn.net/coolwzjcool/article/details/6698327 版权声明:本文为博主原创文章,未经博主允许不得转载. 为了达到软件注册,或者说软件和电 ...

  6. java获取服务器的ip和地址

    HttpServletRequest httpRequest=(HttpServletRequest)request; String strBackUrl = "http://" ...

  7. 通过js获取计算机内网ip,计算机名,mac地址

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  8. JAVA获取本机IP和Mac地址

       在项目中,时常需要获取本机的Ip或是Mac地址,进行身份和权限验证,本文就是通过java代码获取ip和Mac. package com.svse.query;import java.net.In ...

  9. java获取本机IP地址

    转载自:http://blog.csdn.net/thunder09/article/details/5360251 在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一 ...

随机推荐

  1. [leetcode]Permutations @ Python

    原题地址:https://oj.leetcode.com/problems/permutations/ 题意: Given a collection of numbers, return all po ...

  2. MFC剪贴板通信

    1.建立一个基于对话框的应用程序,界面如下: 2.对两个按钮进行消息响应: void CChipBoardOperateDlg::OnBnClickedBtnCopycb() { // TODO: 在 ...

  3. mysql 字符串按照数字类型排序

    一个varchar,char的字段 存放 1+,12- ,11等字符串将字段*1或者+0可以将MySQL字符串字段按数值排序 order by 字段名称+0 desc/asc的形式进行排序 order ...

  4. 让人郁闷的.net

    一个旧项目,.net 2.0的,因为一个小改动,mongo数据库加了密码,结果折腾两天却无法解决,让人郁闷的地方太多: .net版本多,用的原来的驱动是1.7的,在.net 2.0就可以,mongo服 ...

  5. opencv直方图拉伸

    1.首先计算出一幅图像的直方图 //计算直方图 cv::MatND ImageHist::getHist(const cv::Mat &image){ cv::Mat im; if(image ...

  6. 数据驱动测试二:使用TestNG和CSV文件进行数据驱动

    转载:https://blog.csdn.net/heart_1014/article/details/52013173 使用@DataProvider注解定义当前方法中的返回对象CSV文件(存放测试 ...

  7. centos6默认python2.6升级2.7 卸载python2.6升级2.7

    转自:http://blog.csdn.net/u010098331/article/details/52190354 本文介绍CentOS 6.3从自带的Pyhon版本是2.6升级到2.7.6的方法 ...

  8. Mybatis源码分析之SqlSession和Excutor(二)

    通过上一篇文章的分析我们,我初步了解了它是如何创建sessionFactory的(地址:Mybatis源码分析之SqlSessionFactory(一)), 今天我们分析下Mybatis如何创建Sql ...

  9. C#.NET常见问题(FAQ)-如何让Listbox支持多选

    把SelectionMode改成MultiExtended   更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123   我的在线 ...

  10. Android MarsDaemon实现进程及Service常驻

    前段时间.就讨论过关于怎样让Service常驻于内存而不被杀死,最后的结论就是使用JNI实现守护进程,可是不得不说的是,在没有改动系统源代码的情况下,想真正实现杀不死服务,是一件非常难的事情.眼下除了 ...