返回

Android 获取本机Ip 和 Mac

发布时间:2022-11-12 23:25:25 532
# html

获取本机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);
}

​​http://blog.sina.com.cn/s/blog_77c632410101cy1v.html​​

 

 

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
Android ImageSwitcher 2022-11-12 22:30:18