java – 查找本地网络中的所有IP地址
发布时间:2020-05-24 12:58:14 所属栏目:Java 来源:互联网
导读:我想找到我当前使用 Java代码连接的本地网络中设备的所有IP地址.有用的实用程序 Advanced IP Scanner能够在我的 subnet of 192.168.178 / 24中找到各种IP地址: 根据this的答案,我按以下方式构建了我的代码: import java.io.IOException;import java.net.Ine
|
我想找到我当前使用
Java代码连接的本地网络中设备的所有IP地址.有用的实用程序
根据this的答案,我按以下方式构建了我的代码: import java.io.IOException;
import java.net.InetAddress;
public class IPScanner
{
public static void checkHosts(String subnet) throws IOException
{
int timeout = 100;
for (int i = 1; i < 255; i++)
{
String host = subnet + "." + i;
if (InetAddress.getByName(host).isReachable(timeout))
{
System.out.println(host + " is reachable");
}
}
}
public static void main(String[] arguments) throws IOException
{
checkHosts("192.168.178");
}
}
不幸的是,这不会打印出任何结果,这意味着无法访问任何IP地址.为什么?我的本地网络中有设备,如高级IP扫描仪扫描中所示. 解决方法尝试增加超时.我用了大约5000毫秒,这对我很有帮助.如果您不想等待5000ms * 254 = 21分钟,请尝试使用此代码并行ping到地址: public static void getNetworkIPs() {
final byte[] ip;
try {
ip = InetAddress.getLocalHost().getAddress();
} catch (Exception e) {
return; // exit method,otherwise "ip might not have been initialized"
}
for(int i=1;i<=254;i++) {
final int j = i; // i as non-final variable cannot be referenced from inner class
new Thread(new Runnable() { // new thread for parallel execution
public void run() {
try {
ip[3] = (byte)j;
InetAddress address = InetAddress.getByAddress(ip);
String output = address.toString().substring(1);
if (address.isReachable(5000)) {
System.out.println(output + " is on the network");
} else {
System.out.println("Not Reachable: "+output);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start(); // dont forget to start the thread
}
}
为我工作完美. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
