From e21f5230134426df8925f6468e80f0276cc26d50 Mon Sep 17 00:00:00 2001 From: Anton Keks Date: Tue, 12 May 2020 23:15:28 +0300 Subject: [PATCH] send fewer initial UDP packets and send more if successful reply --- .../azib/ipscan/core/net/CombinedUnprivilegedPinger.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/net/azib/ipscan/core/net/CombinedUnprivilegedPinger.java b/src/net/azib/ipscan/core/net/CombinedUnprivilegedPinger.java index 519c09e9..790678c4 100644 --- a/src/net/azib/ipscan/core/net/CombinedUnprivilegedPinger.java +++ b/src/net/azib/ipscan/core/net/CombinedUnprivilegedPinger.java @@ -29,15 +29,17 @@ public class CombinedUnprivilegedPinger implements Pinger { public PingResult ping(ScanningSubject subject, int count) throws IOException { // try UDP first - it should be more reliable in general - PingResult udpResult = udpPinger.ping(subject, max(1, (int)Math.ceil(count / 1.5))); - if (udpResult.isAlive()) return udpResult; + int udpCountInitialCount = max(1, count / 2); + PingResult udpResult = udpPinger.ping(subject, udpCountInitialCount); + if (udpResult.isAlive()) + return udpResult.merge(udpPinger.ping(subject, count - udpCountInitialCount)); // fallback to TCP - it may detect some hosts UDP cannot PingResult tcpResult = tcpPinger.ping(subject, count); return tcpResult.merge(udpResult); } - public void close() throws IOException { + public void close() { udpPinger.close(); tcpPinger.close(); }