iOS获取设备IP地址(ipv4ipv6有效性判断)

iOS获取设备IP地址(ipv4ipv6有效性判断),第1张

先说明一下,获取IP地址方法网上很多,大多不是很全面,获取的IP地址应该同时包含ipv4和ipv6的,同时由于iOS系统问题,即时连接的是4G没有连接WiFi,获取的WiFi地址也有值不为空,因此需要判断处理一下。例如下面这个:

有的小伙伴把fe80开头的ipv6地址过滤掉,来获取当前连接的ipv6地址,这种方式也是可以的。

1 引入头文件和宏定义

2 获取IP地址

3判断IP地址有效性

如果需要获取 USB有线连接、***等其他连接方式的IP地址,请参考

Stack Overflow这个文章

先从开始菜单中打开控制面板程序,进入控制面板窗口后,找到网络连接并打开。或者从桌面网络邻居处单击右键,选择属性,打开网络连接;进入网络连接窗口后,选择本地连接图标,单击右键,选择菜单中的属性;进入本地连接属性窗口后,选择此连接使用下列项目下的Internet协议,然后按右下侧的属性;进入下一个窗口后,就能查看IP地址。

IP地址是网络协议地址,它代表的是每一台访问网络的计算机所处的位置,因此,不同的计算机有着不同的IP地址。网络上的大型服务器会对每一台访问网络的计算机进行地址分配,这样能够屏蔽它们物理上带来的差异,带来巨大的便利性。

为了保证IP地址便于记忆,同时也便于它们进行不同的表示,IP地址是有严格的规定格式的。整体上看,他就是一串关于计算机的数字,分为四段,每段为3位数,中间还有点进行分隔。而且在每一段上的数值是有严格的大小范围的,所以IP地址能够表示的计算机其实是有限的,它不能够进行无穷数量的表示,仅仅是能够满足日常上网电脑的地址表示而已。

1按图1所示顺序打开cmd终端程序

2然后在命令行输入: ipconfig ,找到“IPv4地址”,其后面的就是你自己的IP地址

打开自己手机的热点,让电脑连接,然后在WLAN热点里点击“已连接设备”(如图4),之后就可以看到自己电脑的IP地址了,如图5所示

通过bat文件获取ip地址的代码如下:

@echo off

set pcName=yourTestPCname

~~~~~~~~~~~~~~~~~(红色)

ping %pcName% -4

@echo -

for /f "tokens=2 delims=[" %%i in ('ping %pcName% -4^|findstr "%pcName%"') do set ip=%%i

set iptmp=%ip:~0,14%

set lastchar=%iptmp:~13,1%

IF /I "%lastchar%"=="]" (set iptmp=%ip:~0,13%)

@echo ==================ip:%iptmp%===============

@echo -

pause

bat文件:

bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 bat 或 cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cmdexe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。

1得到局域网网段,可由自己机器的IP来确定 (也可以手动获取主机IP-CMD-ipconfig /all)

2根据IP类型,一次遍历局域网内IP地址

JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可

代码如下::

package bean;

import javaio;

import javautil;

public class Ip{

static public HashMap ping; //ping 后的结果集

public HashMap getPing(){ //用来得到ping后的结果集

return ping;

}

//当前线程的数量, 防止过多线程摧毁电脑

static int threadCount = 0;

public Ip() {

ping = new HashMap();

}

public void Ping(String ip) throws Exception{

//最多30个线程

while(threadCount>30)

Threadsleep(50);

threadCount +=1;

PingIp p = new PingIp(ip);

pstart();

}

public void PingAll() throws Exception{

//首先得到本机的IP,得到网段

InetAddress host = InetAddressgetLocalHost();

String hostAddress = hostgetHostAddress();

int k=0;

k=hostAddresslastIndexOf("");

String ss = hostAddresssubstring(0,k+1);

for(int i=1;i <=255;i++){ //对所有局域网Ip

String iip=ss+i;

Ping(iip);

}

//等着所有Ping结束

while(threadCount>0)

Threadsleep(50);

}

public static void main(String[] args) throws Exception{

Ip ip= new Ip();

ipPingAll();

javautilSet entries = pingentrySet();

Iterator iter=entriesiterator();

String k;

while(iterhasNext()){

MapEntry entry=(MapEntry)iternext();

String key=(String)entrygetKey();

String value=(String)entrygetValue();

if(valueequals("true"))

Systemoutprintln(key+"-->"+value);

}

}

class PingIp extends Thread{

public String ip; // IP

public PingIp(String ip){

thisip=ip;

}

public void run(){

try{

Process p= RuntimegetRuntime()exec ("ping "+ip+ " -w 300 -n 1");

InputStreamReader ir = new InputStreamReader(pgetInputStream());

LineNumberReader input = new LineNumberReader (ir);

//读取结果行

for (int i=1 ; i <7; i++)

inputreadLine();

String line= inputreadLine();

if (linelength() <17 || linesubstring(8,17)equals("timed out"))

pingput(ip,"false");

else

pingput(ip,"true");

//线程结束

threadCount -= 1;

}catch (IOException e){}

}

}

}

以上就是关于iOS获取设备IP地址(ipv4/ipv6有效性判断)全部的内容,包括:iOS获取设备IP地址(ipv4/ipv6有效性判断)、怎么查看IP地址、获取自己电脑的IP地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/9795554.html

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

发表评论

登录后才能评论

评论列表(0条)

保存