From f9245e8404124c48db870ab637e4bb23a39b2a96 Mon Sep 17 00:00:00 2001 From: Kieran Wallbanks Date: Sun, 25 Apr 2021 22:41:13 +0100 Subject: [PATCH] Move free port obtaining to util class --- .../minestom/server/extras/lan/OpenToLAN.java | 5 ++-- .../minestom/server/utils/NetworkUtils.java | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 src/main/java/net/minestom/server/utils/NetworkUtils.java diff --git a/src/main/java/net/minestom/server/extras/lan/OpenToLAN.java b/src/main/java/net/minestom/server/extras/lan/OpenToLAN.java index 6e37919b2..d78b8d447 100644 --- a/src/main/java/net/minestom/server/extras/lan/OpenToLAN.java +++ b/src/main/java/net/minestom/server/extras/lan/OpenToLAN.java @@ -3,6 +3,7 @@ package net.minestom.server.extras.lan; import net.minestom.server.MinecraftServer; import net.minestom.server.event.server.ServerListPingEvent; import net.minestom.server.timer.Task; +import net.minestom.server.utils.NetworkUtils; import net.minestom.server.utils.time.Cooldown; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; @@ -57,9 +58,7 @@ public class OpenToLAN { if (port == 0) { try { - final ServerSocket socket = new ServerSocket(0); - port = socket.getLocalPort(); - socket.close(); + port = NetworkUtils.getFreePort(); } catch (IOException e) { LOGGER.warn("Could not find an open port!", e); return false; diff --git a/src/main/java/net/minestom/server/utils/NetworkUtils.java b/src/main/java/net/minestom/server/utils/NetworkUtils.java new file mode 100644 index 000000000..80ae15c4f --- /dev/null +++ b/src/main/java/net/minestom/server/utils/NetworkUtils.java @@ -0,0 +1,29 @@ +package net.minestom.server.utils; + +import java.io.IOException; +import java.net.ServerSocket; + +/** + * Network related utilities. + */ +public class NetworkUtils { + + private NetworkUtils() { } + + /** + * Gets a free port. + * + * @return the port + * @throws IOException if a port could not be found + */ + public static int getFreePort() throws IOException { + int port; + + final ServerSocket socket = new ServerSocket(0); + port = socket.getLocalPort(); + + socket.close(); + + return port; + } +}