Java定时任务:探测多个IP端口是否通 在网络通信中,我们经常需要检测多个IP地址的多个端口是否可用。这种探测的需求可以通过Java编程语言来实现。本文将介绍如何使用Java编写一个
Java定时任务:探测多个IP端口是否通
在网络通信中,我们经常需要检测多个IP地址的多个端口是否可用。这种探测的需求可以通过Java编程语言来实现。本文将介绍如何使用Java编写一个定时任务,用于探测多个IP地址的多个端口是否可用,并提供了代码示例。
流程图
flowchart TD
subgraph 初始化
A[获取待探测的IP地址和端口] --> B[设置定时任务]
B --> C[开始定时任务]
end
subgraph 定时任务
C --> D[遍历IP地址列表]
D --> E[遍历端口列表]
E --> F[探测端口是否可用]
F --> G[记录探测结果]
G --> H{是否继续探测}
H --> |是| D
H --> |否| I[结束定时任务]
end
代码示例
下面是一个简单的Java代码示例,用于实现上述定时任务。
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
public class PortScanner {
private static final List<String> ipList = new ArrayList<>();
private static final List<Integer> portList = new ArrayList<>();
public static void main(String[] args) {
// 获取待探测的IP地址和端口
initIPList();
initPortList();
// 设置定时任务,每隔5秒执行一次
Timer timer = new Timer();
timer.schedule(new ScanTask(), 0, 5000);
}
private static void initIPList() {
// TODO: 添加需要探测的IP地址到ipList
ipList.add("192.168.0.1");
ipList.add("192.168.0.2");
ipList.add("192.168.0.3");
}
private static void initPortList() {
// TODO: 添加需要探测的端口到portList
portList.add(80);
portList.add(8080);
portList.add(22);
}
private static boolean isPortAvailable(String ip, int port) {
try (Socket socket = new Socket()) {
socket.connect(new InetSocketAddress(ip, port), 1000);
return true;
} catch (Exception e) {
return false;
}
}
private static class ScanTask extends TimerTask {
@Override
public void run() {
for (String ip : ipList) {
for (int port : portList) {
boolean isAvailable = isPortAvailable(ip, port);
String result = isAvailable ? "可用" : "不可用";
System.out.println("IP地址:" + ip + ",端口:" + port + ",状态:" + result);
}
}
}
}
}
在上述代码中,我们先定义了一个PortScanner
类,其中包含了一个ScanTask
内部类,用于执行定时任务。在main
方法中,我们首先调用initIPList
方法和initPortList
方法,将待探测的IP地址和端口添加到ipList
和portList
中。然后,我们创建一个定时任务ScanTask
,并设置每隔5秒执行一次。定时任务中,我们遍历ipList
和portList
,调用isPortAvailable
方法探测IP地址和端口是否可用,然后将结果打印到控制台。
结果展示
当运行上述代码时,控制台将显示每个IP地址的每个端口的探测结果。例如:
IP地址:192.168.0.1,端口:80,状态:可用
IP地址:192.168.0.1,端口:8080,状态:不可用
IP地址:192.168.0.1,端口:22,状态:可用
IP地址:192.168.0.2,端口:80,状态:不可用
IP地址:192.168.0.2,端口:8080,状态:可用
IP地址:192.168.0.2,端口:22,状态:可用
IP地址:192.168.0.3,端口:80,状态:可用
IP地址:192.168.0.3,端口:8080,状态:不可用