
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方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)