资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

mac获取java代码,mac怎么写java代码

java如何获取mac地址?

以windows举例。

10年积累的成都网站建设、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站策划后付款的网站建设流程,更有南阳免费网站建设让你可以放心的选择与我们合作。

运行命令" cmd ipconfig /all"就会出现以下结果

Physical Address. . . . . . . . . : 20-CF-30-9A-60-EE

java就能过这样的命令来获取。以下是示例。

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class TestMac

{

public static void main(String[] args) {

System.out.println("Operation System=" + getOsName());

System.out.println("Mac Address=" + getMACAddress());

System.out.println("通过ip获取mac"+getMACAddress("192.168.1.101"));

}

public static String getOsName() {

String os = "";

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

return os;

}

public static String getMACAddress() {

String address = "";

String os = getOsName();

if (os.startsWith("Windows")) {

try {

String command = "cmd.exe /c ipconfig /all";

Process p = Runtime.getRuntime().exec(command);

BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

String line;

while ((line = br.readLine()) != null) {

if (line.indexOf("Physical Address") 0) {

int index = line.indexOf(":");

index += 2;

address = line.substring(index);

break;

}

}

br.close();

return address.trim();

} catch (IOException e) {

}

} else if (os.startsWith("Linux")) {

String command = "/bin/sh -c ifconfig -a";

Process p;

try {

p = Runtime.getRuntime().exec(command);

BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

String line;

while ((line = br.readLine()) != null) {

if (line.indexOf("HWaddr") 0) {

int index = line.indexOf("HWaddr") + "HWaddr".length();

address = line.substring(index);

break;

}

}

br.close();

} catch (IOException e) {

}

}

address = address.trim();

return address;

}

public static String getMACAddress(String ipAddress) {

String str = "", strMAC = "", macAddress = "";

try {

Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);

InputStreamReader ir = new InputStreamReader(pp.getInputStream());

LineNumberReader input = new LineNumberReader(ir);

for (int i = 1; i 100; i++) {

str = input.readLine();

if (str != null) {

if (str.indexOf("MAC Address") 1) {

strMAC = str.substring(str.indexOf("MAC Address") + 14,

str.length());

break;

}

}

}

} catch (IOException ex) {

return "Can't Get MAC Address!";

}

//

if (strMAC.length() 17) {

return "Error!";

}

macAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5)

+ ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11)

+ ":" + strMAC.substring(12, 14) + ":"

+ strMAC.substring(15, 17);

//

return macAddress;

}

}

剑天梦的回答原理和我这个一样,都是通过Process 执行命令。 我直接补充到答案里了。不过

我这边运行那个命令出来的结果很多,那么花的时间就长了。优点是能够获取别人的mac地址 。

如何使用Java代码获取Android移动终端Mac地址

一种方法是 开启wifi 然后通过wifi获取Mac地址

public static String getLocalMacAddressFromWifiInfo(Context context){

WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

WifiInfo info = wifi.getConnectionInfo();

return info.getMacAddress();

}

第二种 是通过busybox ifconfig

public String getMacAddress() {

String result = "";

String Mac = "";

result = callCmd("busybox ifconfig", "HWaddr");

if (result == null) {

return "网络出错,请检查网络";

}

if (result.length() 0 result.contains("HWaddr")) {

Mac = result.substring(result.indexOf("HWaddr") + 6, result.length() - 1);

if (Mac.length() 1) {

result = Mac.toLowerCase();

}

}

return result.trim();

}

求获取客户端mac地址java代码,急需急需,麻烦了

通过ip获取指定ip地址的mac地址,ip可以通过请求request获取,

request.getRemoteAddr();

(当然获取ip也不是在任何情况下都有效的)

通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址。

您也许需要通过其他的方式获取,(见附)

//获取mac如下 (nbtstat -A IPAddress是对给定的IP地址解析其主机名。如果不能正常解析它的主机

//名的话,有可能是防火墙屏蔽了。也可能是在DNS中将NetBios 解析选项屏蔽了。)

public String getMACAddress(String ip){

String str = "";

String macAddress = "";

try {

Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);

InputStreamReader ir = new InputStreamReader(p.getInputStream());

LineNumberReader input = new LineNumberReader(ir);

for (int i = 1; i 100; i++) {

str = input.readLine();

if (str != null) {

if (str.indexOf("MAC Address") 1) {

macAddress = str.substring(str.indexOf("MAC Address") + 14, str.length());

break;

}

if (str.indexOf("MAC Address") 1) {

macAddress = str.substring(str.indexOf("MAC 地址") + 14, str.length());

break;

}

//以上有个判断,不同系统cmd命令执行的返回结果展示方式不一样,我测试的win7是MAC 地址

//所以又第二个if判断 你可先在你机器上cmd测试下nbtstat -A 命令 当然得有一个你可以ping通的

//网络ip地址,然后根据你得到的结果中mac地址显示方式来确定这个循环取值

}

}

} catch (IOException e) {

e.printStackTrace(System.out);

}

return macAddress;

}

附:

通过代理了的客户端ip地址获取方式

于是可得出获得客户端真实IP地址的方法一:

public String getRemortIP(HttpServletRequest request) {

if (request.getHeader("x-forwarded-for") == null) {

return request.getRemoteAddr();

}

return request.getHeader("x-forwarded-for");

}

获得客户端真实IP地址的方法二:

public String getIpAddr(HttpServletRequest request) {

String ip = request.getHeader("x-forwarded-for");

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("Proxy-Client-IP");

}

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getHeader("WL-Proxy-Client-IP");

}

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getRemoteAddr();

}

return ip;

}

可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?

答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。如:

X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100

用户真实IP为: 192.168.1.110

如何使用Java代码获取Android和ios移动终端Mac地址

通过设备开通WiFi连接获取Mac地址是最可取的,代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

/**

* 设备开通WiFi连接,通过wifiManager获取Mac地址

*

* @author 高焕杰

*/

public static String getMacFromWifi(Context context){

ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

State wifiState = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();

if(wifiState == NetworkInfo.State.CONNECTED){//判断当前是否使用wifi连接

WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

if (!wifiManager.isWifiEnabled()) { //如果当前wifi不可用

wifiManager.setWifiEnabled(true);

}

WifiInfo wifiInfo = wifiManager.getConnectionInfo();

return wifiInfo.getMacAddress();

}

return null;

}

除了上面这种方法,网上还给出了另外两种方法:

1、通过调用Linux的busybox命令获取Mac地址:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

/**

* 通过调用Linux的busybox命令获取Mac地址

*

* @author 高焕杰

*/

private static String getMacFromCallCmd(){

try {

String readLine = ;

Process process = Runtime.getRuntime().exec(busybox ifconfig);

BufferedReader bufferedReader = new BufferedReader (new InputStreamReader(process.getInputStream()));

while ((readLine = bufferedReader.readLine ()) != null) {//执行命令cmd,只取结果中含有HWaddr的这一行

if(readLine.contains(HWaddr)){

return readLine.substring(readLine.indexOf(HWaddr)+6, readLine.length()-1);

}

}

}catch(Exception e) { //如果因设备不支持busybox工具而发生异常。

e.printStackTrace();

}

return null;

}

注意:这种方法在Android Pad中可以准确获取到的Mac地址,但是在Android手机中无法准确获取到。

2、通过查询记录了MAC地址的文件(文件路径:“/proc/net/arp”)获取Mac地址:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

/**

* 通过查询记录了MAC地址的文件(文件路径:“/proc/net/arp”)获取Mac地址

*

* @author 高焕杰

*/

private static String getMacFromFile(Context context){

String readLine =;

BufferedReader bufferedReader = null;

try {

bufferedReader = new BufferedReader(new FileReader(new File(/proc/net/arp)));

int rollIndex = 0;

while((readLine = bufferedReader.readLine())!=null){

if(rollIndex == 1){

break;

}

rollIndex = rollIndex + 1;

}

} catch (IOException e) {

e.printStackTrace();

} finally {

if (bufferedReader != null) {

try {

bufferedReader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

if(readLine !=null readLine.length()1){

String[] subReadLineArray = readLine.split( );

int rollIndex = 1;

for(int i = 0; i subReadLineArray.length; ++i){

if(!TextUtils.isEmpty(subReadLineArray[i])){

if(rollIndex == 4){

return subReadLineArray[i];

}

rollIndex = rollIndex + 1;

}

}

}

return null;

}

注意:无论在Android Pad中还是在Android手机中,这种方法都无法准确获取到Mac地址。

java怎么获取系统mac地址

首先,创建工程,包,和一个类。

在此不加详述,我们直接看代码。

这里,我把这个类命名为GetMacAddr

这里,最最关键的就是这里这个方法。

我们通过NetworkInterface这个类来操作。

也就是通过getLocalHost()方法先得到本机IP,

然后调用getHardwareAddress()方法得到一个byte数组的地址。

我们把六位地址传到一个byte数组里面,然后输出来就是。

不多废话,看代码:

private void getMACAddr()

throws SocketException, UnknownHostException {

// 获得IP

NetworkInterface netInterface =

NetworkInterface.getByInetAddress(InetAddress.getLocalHost());

// 获得Mac地址的byte数组

byte[] macAddr = netInterface.getHardwareAddress();

System.out.print("MAC Addr:\t");

// 循环输出

for (byte b : macAddr) {

// 这里的toHexString()是自己写的格式化输出的方法,见下步。

System.out.print(toHexString(b) + " ");

}

}

上一步骤中,为什么会出现一个toHexString()方法呢?

因为可能10进制转16进制时候可能会出现单字符,

所以,如果有出现单字符的情况,我们在其前面添加一个“0”做占位符。

这也是为了视觉的直观,也夹带着个人的习惯。

private static String toHexString(int integer) {

// 将得来的int类型数字转化为十六进制数

String str = Integer.toHexString((int) (integer 0xff));

// 如果遇到单字符,前置0占位补满两格

if (str.length() == 1) {

str = "0" + str;

}

return str;

}

怎样在mac上编写并运行java程序

工具/原料

一台苹果系统的笔记本电脑

eclipse软件

方法/步骤

1.查询登录eclipse官网,由于我是用Java开发的所以步骤如下:

2.找到“Eclipse IDE for java Developers”此处右上角会根据你当前使用的系统自动选择,Mac下就会自动选择位“Mac OS X(Cocoa)”

3.然后点击右边的“Mac OS X 64bit”(这里我的Air是i5处理器可以用64位的),根据你的电脑也可以选择“Mac OS X 32bit”进行下载。

4.进入下载界面后,点击绿色下载箭头,浏览器进行下载。(下载后的格式为压缩格式,需先解压)

5.下载完成后(下载后的格式为压缩格式,需先解压),在解压后的eclipse文件夹中找到eclipse.app,点击打开。

6.打开后如图1所示,成功进入后,如图2所示

7.界面左上角有“welcome”的页面名,将该页面关闭,会出现下图

现在,可以开始编写java了,现在我来做一个示范,比如说输出一个“hello world!”的经典例题。

在左边栏目框里,点击右键,选择“New”,在出现的快捷菜单里点击“java project“,会出现下图

2.将光标移至“project name”填写框最前端,给自己的项目取一个名字。在这里我将“project name”填写为“first test”。然后点击“Finish”。OK,现在项目已建成,名字为“first test”。

3.下面,需要建一个类,点击"src",如图1,右键,选择“new”,再选择“class”。出现下图2

4.然后输入类的名字。 点击“Finish”。注意,main要记得勾选。

5.OK,开始输入代码吧!注意哦,主框架代码系统会自动显示,无需我们自己输入,

6.代码输入完毕,点击菜单栏“Run”按钮,OK啦,就可以在最下面一

栏”Console“界面看到运行结果


网站名称:mac获取java代码,mac怎么写java代码
URL地址:http://cdkjz.cn/article/hsooci.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220