繁体   English   中英

获取字节mac地址在局域网上唤醒

[英]Get bytes mac addres to wake on lan

我正在尝试制作一个可在lan pc上唤醒的应用程序。

在此页面中,我找到了一个Java示例: https : //www.sistemasorp.es/2005/06/13/wake-on-lan-y-magic-packet/,但是我对如何获取mac地址字节感到困惑。

如何获得字节?

在网页中:

**byte** mac[]={0x01,0x02,0x03,0x04,0x05,0x06};

在这个问题中:( 如何将Mac地址转换为十六进制并将其传递给Java中的字节数组

**Byte**[] macAddressBytes = new Byte[6];
...
Integer hex = Integer.parseInt(macAddressParts[i], 16);
macAddressBytes[i] = hex.byteValue();

(字节与字节)

我执行以下代码:

String output="";
byte mac1_1[]={0x01,0x02,0x03,0x04,0x05,0x06};
output+="mac1_1= "+mac1_1.toString()+"\n";
Byte mac1_2[]={0x01,0x02,0x03,0x04,0x05,0x06};
output+="mac1_2= "+mac1_2.toString()+"\n";
String mac2String="010203040506";
byte mac2_1[]=mac2String.getBytes();
output+="mac2_1= "+mac2_1.toString()+"\n";
String mac3 = "01:02:03:04:05:06";
String[] macAddressParts = mac3.split(":");
byte[] mac3_1 = new byte[6];
Byte[] mac3_2 = new Byte[6];
for(int i=0; i<6; i++){
    Integer hex = Integer.parseInt(macAddressParts[i], 16);
    mac3_1[i] = hex.byteValue();
    mac3_2[i] = hex.byteValue();
}
output+="mac3_1= "+mac3_1.toString()+"\n";
output+="mac3_2= "+mac3_2.toString()+"\n";
System.out.println(output);

我得到这个结果:

mac1_1= [B@106d69c

mac1_2= [Ljava.lang.Byte;@52e922

mac2_1= [B@25154f

mac3_1= [B@10dea4e

mac3_2= [Ljava.lang.Byte;@647e05

所有字节都不同!

有人知道哪个正确吗?

要从设备获取MAC,请使用WifiManager

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);

接着

String mac = wifiManager.getConnectionInfo().getMacAddress()

现在只需从您的mac变量中调用方法getBytes(string)

从android获取mac anddres仅适用于android api <= 21,对于android M可以看到此changelog

http://developer.android.com/intl/es/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM