android 根据ip获取mac,Android 获取本机Ip 和 Mac

获取本机IP和MAC。

public class MainActivity extends Activity {

private EditText ed1, ed2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ed1 = (EditText) findViewById(R.id.et1);

ed2 = (EditText) findViewById(R.id.et2);

ed1.setText(getIP());

ed2.setText(getLocalMacAddressFromIp(getIP()));

new Thread() {

@Override

public void run() {

try {

sendInfo();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}.start();

}

public void sendInfo() throws Exception {//可以通过 DatagramPacket 的getAddress()方法获取ip

final String GROUP_ADDR = "224.224.224.224";

final int PORT = 4444;

MulticastSocket ms = new MulticastSocket(PORT);

InetAddress addr = InetAddress.getByName(GROUP_ADDR);

ms.joinGroup(addr);

String info = "hello";

byte[] buf = info.getBytes();

DatagramPacket dp = new DatagramPacket(buf, buf.length, addr, PORT);

while (true) {

Thread.sleep(2000);

ms.send(dp);

}

}

public static String getIP() {

try {

for (Enumeration en = NetworkInterface

.getNetworkInterfaces(); en.hasMoreElements();) {

NetworkInterface intf = en.nextElement();

for (Enumeration enumIpAddr = intf

.getInetAddresses(); enumIpAddr.hasMoreElements();) {

InetAddress inetAddress = enumIpAddr.nextElement();

if (!inetAddress.isLoopbackAddress()

&& !inetAddress.isLinkLocalAddress()) {

return inetAddress.getHostAddress().toString();

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

public static String getLocalMacAddressFromIp(String ipStr)

{

String mac_s = "";

try {

byte[] mac;

NetworkInterface ne = NetworkInterface.getByInetAddress(InetAddress

.getByName(ipStr));

mac = ne.getHardwareAddress();

mac_s = byte2hex(mac);

} catch (Exception e) {

e.printStackTrace();

}

return mac_s;

}

public static String byte2hex(byte[] b)

{

StringBuffer hs = new StringBuffer(b.length);

String stmp = "";

int len = b.length;

for (int n = 0; n < len; n++)

{

stmp = Integer.toHexString(b[n] & 0xFF);

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

hs = hs.append("0").append(stmp);

} else {

hs = hs.append(stmp);

}

}

return String.valueOf(hs);

}

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值