java獲取主機mac_Java 如何獲取主機的MAC地址

獲取MAC地址首先要理解當前的操作系統,由于在不同的操作系統中CMD命令所在的位置不同,因此首先使用System類中的getProperty("os.name")方法獲取當前的操作系統,getProperty()方法可以確定當前系統屬性,它的參數是一些固定的鍵值。

java.version Java 運行時環境版本

java.vendor Java 運行時環境供應商

java.vendor.url Java 供應商的 URL

java.home Java 安裝目錄

java.vm.specification.version Java 虛擬機規范版本

java.vm.specification.vendor Java 虛擬機規范供應商

java.vm.specification.name Java 虛擬機規范名稱

java.vm.version Java 虛擬機實現版本

java.vm.vendor Java 虛擬機實現供應商

java.vm.name Java 虛擬機實現名稱

java.specification.version Java 運行時環境規范版本

java.specification.vendor Java 運行時環境規范供應商

java.specification.name Java 運行時環境規范名稱

java.class.version Java 類格式版本號

java.class.path Java 類路徑

java.library.path 加載庫時搜索的路徑列表

java.io.tmpdir 默認的臨時文件路徑

java.compiler 要使用的 JIT 編譯器的名稱

java.ext.dirs 一個或多個擴展目錄的路徑

os.name 操作系統的名稱

os.arch 操作系統的架構

os.version 操作系統的版本

file.separator 文件分隔符(在 UNIX 系統中是“/”)

path.separator 路徑分隔符(在 UNIX 系統中是“:”)

line.separator 行分隔符(在 UNIX 系統中是“/n”)

user.name 用戶的賬戶名稱

user.home 用戶的主目錄

user.dir 用戶的當前工作目錄

在確認了CMD命令的位置之后,使用Runtime類中的exec()方法來執行指定的DOS命令,經放置在InputStream對象中,遍歷結果中的每一行,獲取帶有“Phusical Address”字樣的行,將后面的MAC地址返回就可以了。

總結一下,獲取計算機MAC地址的總體思路:1.獲取當前的操作系統 2.找到當前系統下CMD命令的位置 3.用exec()方法執行指定的DOS命令 4.遍歷結果的每一行,獲取自己需要的信息。下面是詳細的代碼:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

importjava.io.InputStreamReader;

public class GetMAC {

//聲明一個空的構造方法

public GetMAC(){}

//獲取計算機MAC地址的方法

public String getMAC(){

String macAddress=null;

//獲取操作系統的名稱

String osName=System.getProperty("os.name");

System.out.println("操作系統為:"+osName);

//聲明獲取cmd路徑的對象并實例化

StringBuffer systemPathBuff=new StringBuffer("");

if(osName.indexOf("Windows")>-1){

//Windows操作系統的cmd.exe的絕對路徑

//append方法:將指定的字符串追加到此字符序列

systemPathBuff.append("c:\WINDOWS\system32\cmd.exe");

//System.out.println("cmd.exe的決定路徑:"+systemPathBuff.toString());

} if(osName.indexOf("NT")>-1){

//NT操作系統的cmd.exe的絕對路徑

systemPathBuff.append("c:\WINDOWS\command.com");

} //Process 類提供了執行從進程輸入、執行輸出到進程、

//等待進程完成、檢查進程的退出狀態以及銷毀(殺掉)進程的方法

Process pro=null;

try{ //功能:相當于在cmd下面執行dir命令,并得到命令執行完畢后的輸出流

pro=Runtime.getRuntime().exec(systemPathBuff.toString()+" /c dir ");

InputStream getMsg=pro.getInputStream();

BufferedReader br=new BufferedReader(new InputStreamReader(getMsg));

//讀取第一行

String message=br.readLine();

// String serNuResult=null;

int index=-1;

//讀取下一行

message=br.readLine();

//功能:相當于在cmd下執行ipconfig/all命令,并得到命令執行完畢后的輸出流

pro=Runtime.getRuntime().exec(systemPathBuff.toString()+" /c ipconfig/all");//必須在/c的前面

//加空格

getMsg=pro.getInputStream();

br=new BufferedReader(new InputStreamReader(getMsg));

//讀取第一行

message=br.readLine();

while(message!=null){

if((index=message.indexOf("Physical Address"))>0){

macAddress=message.substring(index+36).trim();

break;

} //讀取下一行

message=br.readLine();

} }catch(IOException e){

e.printStackTrace();

} return macAddress;

} public static void main(String[] args){

GetMAC macAdd=new GetMAC();

String macAddress=macAdd.getMAC();

System.out.println("這臺主機的MAC地址為:"+macAddress);

} }

原文:http://www.blogjava.net/seoyouhua/archive/2014/10/30/419312.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541029.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541029.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541029.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微軟免費軟件項目DreamSpark更名為Microsoft Imagine

9月10日消息,微軟免費軟件項目DreamSpark近日正式更名為Microsoft Imagine,將與一年一度的微軟“創新杯(Imagine Cup)”齊名。微軟免費軟件項目DreamSpark更名為Microsoft Imagine  2008年2月19日,微軟公司董事長比爾蓋茨在斯坦福大學發布了…

java jpa_Java JPA 語法知識

前提操作創建一個可持久化的實體類dao層繼承JpaRepositoryT:實體類ID:實體類的主鍵類型例:public interface SysUserRespository extends JpaRepository {}JPA中支持的關鍵詞And --- 等價于 SQL 中的 and 關鍵字,比如 findByUsern…

array.slice_Ruby中帶有示例的Array.slice()方法

array.sliceArray.slice()方法 (Array.slice() Method) In this article, we will study about Array.slice() method. You all must be thinking the method must be doing something which is related to the slicing of elements or objects in the Array instance. It is n…

阿特斯攜手EDF啟動建設巴西191.5MW光伏項目

2016年10月11日,阿特斯太陽能(安大略省,圭爾夫)和EDF Energies Nouvelles(法國,巴黎)共同宣布,將阿特斯巴西Pirapora I太陽能項目80%的股權出售給EDF的巴西本地子公司EDF…

apachejmeter_java源碼_自定義編寫jmeter的Java測試代碼

我們在做性能測試時,有時需要自己編寫測試腳本,很多測試工具都支持自定義編寫測試腳本,比如LoadRunner就有很多自定義腳本的協議,比如"C Vuser","JavaVuser"等協議.同樣,Jmeter也支持自定義編寫的測試代碼,不過與LoadRunner不同的是,Jmeter沒有自帶編譯器,…

julia fit 函數_帶有Julia中示例的flipsign()函數

julia fit 函數Julia| flipsign()函數 (Julia | flipsign() function) flipsign() function is a library function in Julia programming language, it accepts two values as parameters and returns a value with the magnitude of first value and sign of the first value…

優化Android應用內存的若干方法

https://my.oschina.net/chaselinfo/blog/198172摘要: 在app開發的各個階段中要考慮RAM的限制問題, 包括在設計階段(正式開發之前). 使用下面的不同的方法可以達到很好的效果. 當您在設計和開發Android應用時用下面的方法可以使內存運用最高效.使用保守的Service 如果你的應用需…

一? ilkkn.n_IL&FS的完整形式是什么?

一? il&kkn.nIL&FS:基礎設施租賃和金融服務 (IL& FS: Infrastructure Leasing & Financial Services) IL&FS is an abbreviation of Infrastructure Leasing & Financial Services. It is the largest infrastructure development …

java notify喚醒原理_Java wait和notify虛假喚醒原理

自己在此記錄一下,方便日后復習。虛假喚醒的概念jdk官方文檔解釋:所以說在wait和notify一塊使用時,如果使用if作為條件時,會有虛假喚醒的情況發生,所以必須使用while作為循環條件。下面來舉例實驗:首先&…

C#里面的三種定時計時器:Timer

在.NET中有三種計時器:1、System.Windows.Forms命名空間下的Timer控件,它直接繼承自Componet。Timer控件只有綁定了Tick事件和設置EnabledTrue后才會自動計時,停止計時可以用Stop()方法控制,通過Stop()停止之后,如果想…

wireshark rto_RTO的完整形式是什么?

wireshark rtoRTO:地區運輸辦公室/公路運輸辦公室 (RTO: Regional Transport Office/ Road Transport Office) RTO is an abbreviation of the Regional Transport Office. It is an Indian Government departmental organization that is responsible for upholdin…

java8 json轉xml_2019-08-17java對象與json,xml互轉

依賴的jar包,jackson-all-1.7.6.jar,xstream-1.4.4.jar下載地址:鏈接:https://pan.baidu.com/s/1LflD135qlQiIPGXw5XwDmw提取碼:6v29復制這段內容后打開百度網盤手機App,操作更方便哦package json_xml;import com.thoughtworks.xs…

10.8-全棧Java筆記:序列化/反序列化的步驟和實例

本節我們詳細講解10.3節中提到的序列化和反序列化操作。序列化和反序列化是什么當兩個進程遠程通信時,彼此可以發送各種類型的數據。 無論是何種類型的數據,都會以二進制序列的形式在網絡上傳送。比如,我們可以通過http協議發送字符串信息&am…

有效的網絡推廣超級實用方法

我叫龍雨,先后在百度搜狗工作過3年,后來一直負責一家公司的的網絡營銷!不知道大家有沒有聽過111>3這樣一個概念,簡單來說一下這概念!第一呢就是自己的資源,把自己的資源維護好開發好;第二就是網絡營銷,網絡營銷利用…

什么為java運行時的環境_什么是JRE?Java運行時環境簡介(一)

Java開發工具包(JDK),Java虛擬機(JVM)和Java運行時環境(JRE)共同構成了用于開發和運行Java應用程序的Java平臺組件的強大功能.實際上,運行時環境是一種旨在運行其他軟件的軟件.作為Java的運行時環境,JRE包含Java類庫,Java類加載器和Java虛擬機.在這個系統中:的類加載器是負責正…

c語言atoll函數怎么用_C ++中帶有示例的atoll()函數

c語言atoll函數怎么用C Atoll()函數 (C atoll() function) atoll() function is a library function of cstdlib header. It is used to convert the given string value to the integer value. It accepts a string containing an integer (integral) number and returns its…

看清美國“黑客帝國”的真面目

“維基揭秘”網站近日發布了近9000份據稱屬于美國中央情報局的機密文件,顯示中情局擁有強大的黑客攻擊能力,秘密侵入了手機、電腦、智能電視等眾多智能設備。繼美國國家安全局承包商前雇員斯諾登曝光國安局“棱鏡”等監控計劃之后,此次曝光再…

python 示例_帶有示例的Python File close()方法

python 示例文件close()方法 (File close() Method) close() method is an inbuilt method in Python, it is used to flush and close the IO object (file). If we close a closed file it has no effect. close()方法是Python中的內置方法,用于刷新和關閉IO對象(…

linux上mysql分區磁盤位置_Linux下Oracle軟件、數據文件等所在的磁盤分區空間不足的解決思路...

虛擬機中的ORACLE運行的久了,歸檔、數據文件不斷增長,原來安裝ORACLE的分區空間不足。此時可以重新向虛擬機增加一塊硬盤,將OR虛擬機中的Oracle運行的久了,歸檔、數據文件不斷增長,原來安裝ORACLE的分區空間不足。此時…

FloatingActionMenu 向上彈出菜單

本人在github上找到了一個FloatingActionsMenu,精簡了其效果(原效果有上下左右四個方向)僅僅保留向上的效果,并做了一定的優化。github上的源代碼:地址 ,精簡后的源代碼地址:源代碼地址。 轉載于:https://www.cnblogs.…