From 711d6fd902907dde8c61ad5d1b2d641ef716a8f3 Mon Sep 17 00:00:00 2001 From: Julian Santander Date: Fri, 26 Jul 2019 17:06:34 +0200 Subject: [PATCH] Improve selection of local UDP port for client --- .../Scripts/Networking/Forge/Networking/UDPClient.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Forge Networking Remastered Unity/Assets/Bearded Man Studios Inc/Scripts/Networking/Forge/Networking/UDPClient.cs b/Forge Networking Remastered Unity/Assets/Bearded Man Studios Inc/Scripts/Networking/Forge/Networking/UDPClient.cs index bae8e4eb..8cdf5dba 100644 --- a/Forge Networking Remastered Unity/Assets/Bearded Man Studios Inc/Scripts/Networking/Forge/Networking/UDPClient.cs +++ b/Forge Networking Remastered Unity/Assets/Bearded Man Studios Inc/Scripts/Networking/Forge/Networking/UDPClient.cs @@ -22,8 +22,10 @@ using BeardedManStudios.Threading; using System; using System.Net; +using System.Net.NetworkInformation; using System.Net.Sockets; using System.Threading; +using System.Linq; namespace BeardedManStudios.Forge.Networking { @@ -122,8 +124,13 @@ public void Connect(string host, ushort port = DEFAULT_PORT, string natHost = "" { try { - Client = new CachedUdpClient(clientPort); - break; + IPEndPoint[] activeEndPoints = IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners(); + bool alreadyinuse = activeEndPoints.Any(p => p.Port == clientPort); + if(!alreadyinuse) + { + Client = new CachedUdpClient(clientPort); + break; + } } catch {