java写一个遍历指定ip段筛选连接状态中的ip小程序
时间: 2023-09-09 12:04:33 浏览: 119
JAVA编写的IP查询工具
### 回答1:
好的,这是一段 Java 代码,实现了遍历指定 IP 段并筛选出连接状态的 IP:
```
import java.io.IOException;
import java.net.InetAddress;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class PingScan {
private static final int NUM_THREADS = 20;
public static void main(String[] args) throws Exception {
String prefix = "192.168.1.";
int start = 1;
int end = 255;
ExecutorService executor = Executors.newFixedThreadPool(NUM_THREADS);
for (int i = start; i <= end; i++) {
String host = prefix + i;
executor.execute(() -> {
try {
InetAddress address = InetAddress.getByName(host);
if (address.isReachable(1000)) {
System.out.println(host + " is reachable");
}
} catch (IOException e) {
e.printStackTrace();
}
});
}
executor.shutdown();
}
}
```
这段代码使用了 Java 的 InetAddress 类来检测 IP 的连接状态,并使用了线程池来并发地执行每个 IP 的检测,以提高效率。
在代码中,您可以修改 `prefix` 变量来指定需要遍历的 IP 段的前缀,`start` 和 `end` 变量来指定 IP 段的起始和结束。
### 回答2:
这个小程序可以使用Java语言来编写,实现遍历指定IP段,并筛选出连接状态的IP地址。
首先,我们需要使用Java提供的Socket类来检测IP地址的连接状态。可以使用Socket的connect方法来尝试建立连接,如果连接成功,则说明该IP地址是可用的,否则则表示该IP地址不可用。
接下来,我们可以使用循环来遍历指定IP段的所有可能的IP地址。可以将IP段分为四个部分,并使用四个循环来分别遍历每个部分的可能取值。比如对于IP段192.168.0.x,可以使用四个循环来遍历192、168、0和x的所有可能取值。
在遍历过程中,使用Socket的connect方法来检测当前IP地址的连接状态。如果连接成功,则将该IP地址添加到结果列表中。
最后,打印出筛选出的连接状态的IP地址列表即可。
以下是一个简单示例代码:
```java
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
public class IPScanner {
public static void main(String[] args) {
String ip = "192.168.0.";
List<String> availableIps = new ArrayList<>();
for (int i = 0; i <= 255; i++) {
String currentIp = ip + i;
if (isIpReachable(currentIp)) {
availableIps.add(currentIp);
}
}
System.out.println("连接状态的IP地址列表:");
for (String availableIp : availableIps) {
System.out.println(availableIp);
}
}
private static boolean isIpReachable(String ip) {
try {
InetAddress address = InetAddress.getByName(ip);
Socket socket = new Socket(address, 80);
socket.close();
return true;
} catch (Exception e) {
return false;
}
}
}
```
这个小程序将会遍历IP地址段192.168.0.x中的所有IP地址,并筛选出连接状态的IP地址,并打印在控制台上。注意,这个示例程序只使用了80端口进行连接检测,你也可以根据需要修改连接的端口号。
### 回答3:
可以使用Java编写一个小程序来遍历指定的IP段,并筛选出连接状态正常的IP。
首先,需要使用Java的网络编程相关类,如InetAddress和Socket来实现连接状态的检测。以下是一个简单的示例代码:
```java
import java.net.*;
public class IpScanner {
public static void main(String[] args) {
String startIp = "192.168.0.1";
String endIp = "192.168.0.100";
try {
// 将起始IP地址和结束IP地址转换为InetAddress对象
InetAddress start = InetAddress.getByName(startIp);
InetAddress end = InetAddress.getByName(endIp);
// 遍历指定的IP范围
while (!start.equals(end)) {
// 使用Socket类尝试连接指定IP
try {
Socket socket = new Socket();
socket.connect(new InetSocketAddress(start, 80), 1000); // 设定连接超时时间为1秒
// 连接成功,输出IP地址
System.out.println("Connected: " + start.getHostAddress());
socket.close();
} catch (Exception e) {
// 连接异常,忽略该IP地址
}
// 将IP地址+1,继续下一个IP的检测
byte[] addrBytes = start.getAddress();
for (int i = addrBytes.length - 1; i >= 0; i--) {
if (++addrBytes[i] != 0) {
break;
}
}
start = InetAddress.getByAddress(addrBytes);
}
} catch (Exception e) {
// 异常处理
e.printStackTrace();
}
}
}
```
以上代码使用了Socket进行IP连接的检测,并输出连接成功的IP地址。其中,`startIp`和`endIp`变量分别表示指定IP段的起始和结束IP。
通过运行这段代码,可以遍历指定IP段的所有IP,并筛选出连接状态正常的IP。请注意,在实际运行中,可能需要根据需求自行调整相应的参数和错误处理。
阅读全文