commit 76baa932a90a65c5666b6358af81a89bdc3ca47e
parent 8b9a77ec8c00a5a92e37678b98774b4f180ba38e
Author: Matthias Jaros <jaros@mailbox.org>
Date: Mon, 23 Mar 2026 16:19:04 +0100
Added host online check
Diffstat:
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/it_jaros/network_scanner/CliDefaults.java b/src/main/java/com/it_jaros/network_scanner/CliDefaults.java
@@ -5,7 +5,7 @@ public class CliDefaults {
public static final int DELAY_IN_MILLIS = 0;
public static final int TIMEOUT_IN_MILLIS = 300;
public static final int MAX_WORKERS_PER_HOST = 1000;
- public static final int MAX_TARGETS_LIMIT = 3;
+ public static final int MAX_TARGETS_LIMIT = 10;
public static final String PORTS = "1-1024";
public static final boolean SHOW_FILTERED_PORTS = false;
}
diff --git a/src/main/java/com/it_jaros/network_scanner/Scanner.java b/src/main/java/com/it_jaros/network_scanner/Scanner.java
@@ -76,9 +76,15 @@ public class Scanner {
BitSet openPorts = new BitSet(PortRange.MAX_PORT);
BitSet filteredPorts = new BitSet(PortRange.MAX_PORT);
- Progress progress = new Progress(target, portRange.getTotal(), new AtomicInteger(), new AtomicInteger(), new AtomicInteger() );
+ Progress progress = new Progress(target, portRange.getTotal(), new AtomicInteger(), new AtomicInteger(), new AtomicInteger());
progressBar.submit(progress);
+ if(!checkHostOnline(target)) {
+ // Visually show that this host is basically done
+ progress.done().set(progress.total());
+ return new ScanResult(target, openPorts, filteredPorts);
+ }
+
try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) {
List<Future<PortResult>> futures = new ArrayList<>();
while (portRange.hasNext()) {
@@ -127,6 +133,16 @@ public class Scanner {
return new ScanResult(target, openPorts, filteredPorts);
}
+ private boolean checkHostOnline(String target) {
+ try {
+ return InetAddress.getByName(target).isReachable(2000);
+ } catch (IOException e) {
+ // something went wrong
+ }
+
+ return false;
+ }
+
private void waitForSlot(AtomicLong scanSlotFactory) {
if (delayInNanos > 0) {
long slot = scanSlotFactory.getAndAdd(delayInNanos);