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){}
}
}
}
package tmp;
import javanetNetworkInterface;
import javautilEnumeration;
public class MacUtil {
public static String getMacAddress() throws Exception {
String s="";
Enumeration<NetworkInterface> ni = NetworkInterface
getNetworkInterfaces();
while (nihasMoreElements()) {
NetworkInterface netI = ninextElement();
byte[] bytes = netIgetHardwareAddress();
if (netI != null && bytes != null && byteslength == 6) {
StringBuffer sb = new StringBuffer();
for (byte b : bytes) {
// 与11110000作按位与运算以便读取当前字节高4位
sbappend(IntegertoHexString((b & 240) >> 4));
// 与00001111作按位与运算以便读取当前字节低4位
sbappend(IntegertoHexString(b & 15));
sbappend("-");
}
sbdeleteCharAt(sblength() - 1);
s+=sbtoString()toUpperCase()+"\n";
}
}
return s;
}
public static void main(String[] args) throws Exception {
Systemoutprintln(MacUtilgetMacAddress());
}
}
每部手机都有属于自己的Mac地址,那么智能手机如何查看Mac地址呢?下面我给大家详细的介绍一下查看方法。
下面以我的vivo手机为例说明。打开手机上的设置,如下图所示。
选择更多设置,如下图。
点击关于手机,如图所示。
在有关手机界面可以看到我们的Mac地址,而且它是唯一的哦,很类似于我们每个人的身份z哦!
特别提示每种智能手机查看Mac地址方法大同小异,大家可以参考我上面的步骤!
加入文件IPAddressh: /code/IPAddresshIPAddressc: /code/IPAddressc然后使用代码:InitAddresses();GetIPAddresses();GetHWAddresses();int i;NSString deviceIP = nil;for (i=0; i<MAXADDRS; ++i){ static unsigned long localHost = 0x7F000001; // 127001 unsigned long theAddr; theAddr = ip_addrs[i]; if (theAddr == 0) break; if (theAddr == localHost) continue; NSLog(@"Name: %s MAC: %s IP: %s\n", if_names[i], hw_addrs[i], ip_names[i]); //decided what adapter you want details for if (strncmp(if_names[i], "en", 2) == 0) { NSLog(@"Adapter en has a IP of %@", [NSString stringWithFormat:@"%s", ip_names[i]]); }}[/code] 查看原帖>>
以上就是关于JAVA如何获取局域网内所有安卓设备的ip地址,MAC以及序列号全部的内容,包括:JAVA如何获取局域网内所有安卓设备的ip地址,MAC以及序列号、java如何对路由器实时获取连接到的手机的mac地址、如何查找智能手机中的MAC地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)