android设备 如何通过mac地址知道ip地址

android设备 如何通过mac地址知道ip地址,第1张

android 中有 获取IP 和 MAC的方法例如获取Ip

public String GetHostIp() {

try {

for (Enumeration<NetworkInterface> en = NetworkInterface

getNetworkInterfaces(); enhasMoreElements();) {

NetworkInterface intf = ennextElement();

for (Enumeration<InetAddress> ipAddr = intfgetInetAddresses(); ipAddr

hasMoreElements();) {

InetAddress inetAddress = ipAddrnextElement();

if (!inetAddressisLoopbackAddress()) {

return inetAddressgetHostAddress();

}

}

}

} catch (SocketException ex) {

} catch (Exception e) {

}

return null;

}

MAC 就不列举了自行百度,但是你说的问题 让两台设备TCP通讯,如果是在局域网内,也就是用wifi,你获取ip 然后一个客户端一个服务器是可以连接成功的。但是如果用外网的话,就不是这么简单了。比如 我用android 作为客户端PC作为手机 如果手机用外网访问服务器,这就相当于外网访问内网服务器,需要在服务器进行配置 一、在路由器的转发规则设置映射 二、(这个有的情况不需要,例如,你的pc网络是铁通你的手机是移动卡,就不用第二部,如果你的手机是联通卡就需要这步)申请一个固定Ip 给客户打电话

public String getIp() {

String ipaddress = "";

try {

Enumeration<NetworkInterface> en = NetworkInterface

getNetworkInterfaces();

while (enhasMoreElements()) {

NetworkInterface nif = ennextElement();

Enumeration<InetAddress> inet = nifgetInetAddresses();

while (inethasMoreElements()) {

InetAddress ip = inetnextElement();

if (!ipisLoopbackAddress()&& InetAddressUtilsisIPv4Address(ipgetHostAddress())) {

return ipaddress = ipgetHostAddress();

}

}

}

} catch (SocketException e) {

eprintStackTrace();

}

return ipaddress;

}

你电脑上下载逍遥安卓模拟器,用户口碑、性能和流畅度最好的电脑手游模拟器软件,然后在他们市场里面下载这个手游直接电脑上玩,就可以直接像在手机上玩一样,右侧一个键盘映射的功能你设置下,直接键盘鼠标 *** 控。 电脑手机账号的数据完全互通的,通过桌面多开器无限多开。长期电脑玩手游的基本上都是用这个!

第一种方案

[mw_shl_code=java,true] // 获取本地IP函数

public String getLocalIPAddress() {

WifiManager wifimanage = (WifiManager) getSystemService(thisWIFI_SERVICE);// 获取WifiManager

// 检查wifi是否开启

if (wifimanageisWifiEnabled()) {

WifiInfo wifiinfo = wifimanagegetConnectionInfo();

String wifiip = intToIp(wifiinfogetIpAddress());

Logi("MyTag", "-------wifiip----" + wifiip);

return wifiip;

}

try {

for (Enumeration<NetworkInterface> mEnumeration = NetworkInterface

getNetworkInterfaces(); mEnumerationhasMoreElements();) {

NetworkInterface intf = mEnumerationnextElement();

for (Enumeration<InetAddress> enumIPAddr = intf

getInetAddresses(); enumIPAddrhasMoreElements();) {

InetAddress inetAddress = enumIPAddrnextElement(); // 如果不是回环地址

if (!inetAddressisLoopbackAddress()) { // 直接返回本地IP地址

Logi("MyTag", "------getLocalIPAddress---"

+ inetAddressgetHostAddress()toString());

return inetAddressgetHostAddress()toString();

}

}

}

} catch (SocketException ex) {

exprintStackTrace();

}

Logi("MyTag", "------getLocalIPAddress---" + null);

return null;

}[/mw_shl_code]

测试结果:手机端可以正常获取,

电视盒子在插入网线情况下获取的是一串字符fe80::5ec6:d0ff:fec3:b963%eth0,网上有人这是16进制需要处理,但是处理后貌似不是对的ip,wifi下情况正常。

(由于手机不会插入网线,所以此方法是适用手机的)

第二种 方案

此方法可以选择获取ipv4或ipv6,当然我们用的是ipv4

[mw_shl_code=java,true] /

Get IP address from first non-localhost interface

@param ipv4

true=return ipv4, false=return ipv6

@return address or empty string

/

public String getIPAddress(boolean useIPv4) {

WifiManager wifimanage = ((WifiManager) getSystemService(thisWIFI_SERVICE));// 获取WifiManager

// 检查wifi是否开启

if (wifimanageisWifiEnabled()) {

WifiInfo wifiinfo = wifimanagegetConnectionInfo();

String wifiip = intToIp(wifiinfogetIpAddress());

Logi("MyTag", "-------wifiip----" + wifiip);

return wifiip;

}

try {

List<NetworkInterface> interfaces = Collections

list(NetworkInterfacegetNetworkInterfaces());

for (NetworkInterface intf : interfaces) {

List<InetAddress> addrs = Collectionslist(intf

getInetAddresses());

for (InetAddress addr : addrs) {

if (!addrisLoopbackAddress()) {

String sAddr = addrgetHostAddress()toUpperCase();

boolean isIPv4 = InetAddressUtilsisIPv4Address(sAddr);

if (useIPv4) {

if (isIPv4) {

Logi("MyTag", isIPv4 + "--ipv4------------"

+ sAddr);

// return sAddr;

}

} else {

if (!isIPv4) {

int delim = sAddrindexOf('%'); // drop ip6 port

// suffix

String str = delim < 0 sAddr : sAddr

substring(0, delim);

Logi("MyTag", isIPv4 + "-no-ipv4------------"

+ str);

// return str;

}

}

}

}

}

} catch (Exception ex) {

} // for now eat exceptions

return "";

}[/mw_shl_code]

测试结果:手机、电视wifi情况下获取ip是正常的,电视插网线获取ip也是正常。

但是在软件试运行期间,出现电视盒子获取ip为0000,此时电视盒子的网络正常,经过测试分析,发现该网络路由是由管理员手动设置过ip段,

一般我们局域网ip类似于192168112 ,手动设置路电视盒子ip为10101107,此时ip获取错误,一直取不到这个ip,不知道什么原因导致的。

和他聊几句,利用360安全卫士的网络连接查看功能,就能看到具体的ip到此为止,下面的事就是公安,电信部门的事了,你只能利用网友提供的数据库查到大概的县市。特殊的能查到街道,你就很幸运了。

以上就是关于android设备 如何通过mac地址知道ip地址全部的内容,包括:android设备 如何通过mac地址知道ip地址、Android虚拟AP后本机的IP怎么获取、如何取出android模拟器获取本地ip方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9490714.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存