我们这里获取的内网IP 一般是192.168.X,X的IP地址 (在自己的电脑上运行)
原理就是:首先获得本机的IP地址,然后ping网络的IP地址,通过输入刘对象读取所ping的结果,并判断是否为内网的IP地址。
我看了书上描述的方法后,看起来的确容易,可是,真正操作起来,发现了许多的问题,甚至都无法得到结果,其他人的所发的文章大同小异都输出不了
我搞了几天后终于找到了原因
最主要的原因就是-----线程所得结果跟不上整个程序的速度
具体一点就是,当你的线程所进行的操作不是一般的操作,是ping操作,这个操作比如你在cmd中 写入
ping 192.168.253.3 -w 1000 -n 1
很清楚,他是需要等一段时间才能得到返回值的,不像是平常的程序,走一遍就结束了。
所以,这里的线程 对192.168.253.1~192.168.253.255中的每一个ip ping的时候需要等待他的回复,等待他的一个返回值才行------换句话说,就是一个一个慢慢来
关键的code就是在线程类中的
try {
thread.join();
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
通过baidu这个join()方法-------解释为 主线程等待子线程的终止。