重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
手机查看无线网络IP地址的操作方法:设定-连接(无线和网络)-WLAN设置-点击已连接的无线网络-IP地址。
成都网络公司-成都网站建设公司创新互联建站十余年经验成就非凡,专业从事网站设计、成都网站制作,成都网页设计,成都网页制作,软文推广,广告投放等。十余年来已成功提供全面的成都网站建设方案,打造行业特色的成都网站建设案例,建站热线:028-86922220,我们期待您的来电!
一、首先介绍苹果系统下查询手机ip:
1、首先点击【设置】按钮
2、开启无线局域网
3、然后选择无线网络并连接,连接成功后,点击所连接网络后面的惊叹号图标
4、然后就能看到该无线网络的详细信息了,其中就包含了ip地址
二、介绍安卓系统下查询手机ip地址,其方法和苹果系统差不多:
打开系统设置,点击进入
点击wlan
然后进入高级设置
最后就能查看手机的mac地址和ip地址了
果断是坑你的钱啊。
下面是解决办法
1.进入手机系统设置----无线和网络----wifi设置---菜单键----高级-----在下方ip设置里勾选“使用静态ip”
2.在“使用静态ip地址”下方,对应填写:
ip地址:192.168.1.21(这个最后一位数可以随意改,范围0~255,如192.168.1.74)
网关:192.168.1.1(注意了,这里是你路由器的网关,这里是默认的地址)
网络掩码:255.255.255.0(分为三种,详细看电脑里的)
域名1:192.168.1.1(一般和上面的网关地址保持一致,直接上网的得修改为网络网关地址)
域名2:不填写(特殊情况填写)
3.保存!
之后你会发现你的wifi掉线后自动重新连接上了,之后不必再重启路由,不会一直出现“正在获取ip地址”的提示了
如果不想了解,请直接伸手 : android 获取局域网IP与MAC 地址(精简)
开始理清思路:主要使用 linux 两个命令(2017-07-21 fix:这个思路不好,后面使用udp取代【毫秒级】)
【ping】: 查询某个ip是否被设备占用
【cat】 :文本输出命令(其实可以使用 【arp】,但手机需要root权限)
【ping】:这个我就不说了,实在不知道的,这次度娘不会骗你的。主要讲讲 【arp】:这里只简单的介绍,推荐一篇博文: Android 平台上的 ARP 和 ARP欺骗 。我们的【cat】命令主要为了输出手机本地ARP缓存表, ARP命令 可用于查询本机ARP缓存中IP地址和 MAC地址 的对应关系
可以看到我们电脑中缓存的 ip地址与对应的mac地址,但我们手机上又要怎么获得呢?
哈哈其实到这里基本就结束了,也不算什么详解,目前这个方法还有个缺陷就是,耗时比较长,我计算了一下大概得花10秒才能得到局域网内的所有存在的ip与对应的mac。
还有待改善,其实想先取arp缓存,然后把arp中没有的ip地址通过ping测试,然后再取arp缓存,这样可以减少一部分的ping测试线程,但为了保证arp中ip对应的mac永远是新的,只能每次都循环ping测试所有网段内的ip。如果有更好的想法,希望来怼我。
改变思路:使用udp来替代原先多线程ping
具体怎么玩我就不写了,他人的思路,抄袭过来,有损我英俊的形象,写的还是比较好的。
Android 单线程也能极速刷新并获取局域网设备(IP+MAC)信息, 从4分30S 优化到 0.150S 不是梦
如果觉得他的用起来麻烦,我的IpScanner类也更新了,可以直接copy使用,还是简单的。
奉上项目地址: IpSanner (一个类一个回调就搞定了,简单的)
public static String getIPAddress(Context context) {
NetworkInfo info = ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); if (info != null info.isConnected()) { if (info.getType() == ConnectivityManager.TYPE_MOBILE) {//当前使用2G/3G/4G网络
try { //EnumerationNetworkInterface en=NetworkInterface.getNetworkInterfaces();
for (EnumerationNetworkInterface en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
NetworkInterface intf = en.nextElement(); for (EnumerationInetAddress enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress() inetAddress instanceof Inet4Address) { return inetAddress.getHostAddress();
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
} else if (info.getType() == ConnectivityManager.TYPE_WIFI) {//当前使用无线网络
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ipAddress = intIP2StringIP(wifiInfo.getIpAddress());//得到IPV4地址
return ipAddress;
}
} else { //当前无网络连接,请在设置中打开网络
} return null;
} /**
* 将得到的int类型的IP转换为String类型
*
* @param ip
* @return
*/
public static String intIP2StringIP(int ip) { return (ip 0xFF) + "." +
((ip 8) 0xFF) + "." +
((ip 16) 0xFF) + "." +
(ip 24 0xFF);
}
/**
* 获取ip地址
* @return
*/
public static String getHostIP() {
String hostIp = null;
try {
Enumeration nis = NetworkInterface.getNetworkInterfaces();
InetAddress ia = null;
while (nis.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) nis.nextElement();
EnumerationInetAddress ias = ni.getInetAddresses();
while (ias.hasMoreElements()) {
ia = ias.nextElement();
if (ia instanceof Inet6Address) {
continue;// skip ipv6
}
String ip = ia.getHostAddress();
if (!"127.0.0.1".equals(ip)) {
hostIp = ia.getHostAddress();
break;
}
}
}
} catch (SocketException e) {
Log.i("yao", "SocketException");
e.printStackTrace();
}
return hostIp;
}