jscanner

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit c43b6c006355d1863eae80bb2564406407f19007
parent c8d7c63071ce4d3ae0bb767e7972c4879a44cf62
Author: Matthias Jaros <jaros@mailbox.org>
Date:   Mon,  9 Mar 2026 16:33:02 +0100

Changed result Queue to BitSet, which is more memory efficient

Diffstat:
Msrc/main/java/com/it_jaros/networkScanner/App.java | 2+-
Msrc/main/java/com/it_jaros/networkScanner/PortRange.java | 4++--
Msrc/main/java/com/it_jaros/networkScanner/ScanResult.java | 4++--
Msrc/main/java/com/it_jaros/networkScanner/Scanner.java | 7+++----
4 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/it_jaros/networkScanner/App.java b/src/main/java/com/it_jaros/networkScanner/App.java @@ -24,7 +24,7 @@ public class App { } private static void printResult(ScanResult result) { - String ports = result.openPorts().stream().map(String::valueOf).collect(Collectors.joining(",")); + String ports = result.openPorts().stream().mapToObj(String::valueOf).collect(Collectors.joining(",")); String output = "[" + result.target() + "]:"; if (ports.equals("")) { output = output + "No open ports found"; diff --git a/src/main/java/com/it_jaros/networkScanner/PortRange.java b/src/main/java/com/it_jaros/networkScanner/PortRange.java @@ -5,8 +5,8 @@ import java.util.NoSuchElementException; public class PortRange { - private static final int MIN_PORT = 1; - private static final int MAX_PORT = 65535; + public static final int MIN_PORT = 1; + public static final int MAX_PORT = 65535; private final BitSet specifiedPorts = new BitSet(MAX_PORT); private final BitSet availablePorts = new BitSet(MAX_PORT); diff --git a/src/main/java/com/it_jaros/networkScanner/ScanResult.java b/src/main/java/com/it_jaros/networkScanner/ScanResult.java @@ -1,5 +1,5 @@ package com.it_jaros.networkScanner; -import java.util.Queue; +import java.util.BitSet; -public record ScanResult(String target, Queue<Integer> openPorts) {} +public record ScanResult(String target, BitSet openPorts) {} diff --git a/src/main/java/com/it_jaros/networkScanner/Scanner.java b/src/main/java/com/it_jaros/networkScanner/Scanner.java @@ -6,9 +6,8 @@ import java.net.Socket; import java.net.SocketException; import java.net.SocketTimeoutException; import java.util.ArrayList; +import java.util.BitSet; import java.util.List; -import java.util.Queue; -import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -63,7 +62,7 @@ public class Scanner { private ScanResult scanTarget(String target, String ports) { PortRange portRange = new PortRange(ports); AtomicLong portSlotFactory = new AtomicLong(System.nanoTime()); - Queue<Integer> openPorts = new ConcurrentLinkedQueue<>(); + BitSet openPorts = new BitSet(PortRange.MAX_PORT); Progress progress = new Progress(target, portRange.getTotal(), new AtomicInteger(), new AtomicInteger()); progressBar.submit(progress); @@ -79,7 +78,7 @@ public class Scanner { try { int port = f.get(); if (port != -1) { - openPorts.add(port); + openPorts.set(port); progress.open().incrementAndGet(); } } catch (InterruptedException | ExecutionException e) {