From ee4af56848188a00ec391309ae1ca4920c1a8d75 Mon Sep 17 00:00:00 2001 From: PhonicUK Date: Thu, 13 May 2021 20:59:06 +0100 Subject: [PATCH 1/2] Add optional local IP binding Allow the server to have a local IP binding specified. Remains API compatible as the new param is optional and reverts to the same original default (v6Any) --- kcp2k/Assets/kcp2k/highlevel/KcpServer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kcp2k/Assets/kcp2k/highlevel/KcpServer.cs b/kcp2k/Assets/kcp2k/highlevel/KcpServer.cs index 2195ce15..d1b86264 100644 --- a/kcp2k/Assets/kcp2k/highlevel/KcpServer.cs +++ b/kcp2k/Assets/kcp2k/highlevel/KcpServer.cs @@ -78,7 +78,7 @@ public KcpServer(Action OnConnected, public bool IsActive() => socket != null; - public void Start(ushort port) + public void Start(ushort port, IPAddress address = null) { // only start once if (socket != null) @@ -94,7 +94,7 @@ public void Start(ushort port) #else socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp); socket.DualMode = true; - socket.Bind(new IPEndPoint(IPAddress.IPv6Any, port)); + socket.Bind(new IPEndPoint(address ?? IPAddress.IPv6Any, port)); #endif } From e2d45793057d902dfdfa719baeb7cc792be65be7 Mon Sep 17 00:00:00 2001 From: PhonicUK Date: Thu, 13 May 2021 21:00:53 +0100 Subject: [PATCH 2/2] Add custom local IP to KCPTransport Allows (in code) the local IP that the server will bind against to be specified for servers with multiple IPs. --- kcp2k/Assets/kcp2k/MirrorTransport/KcpTransport.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kcp2k/Assets/kcp2k/MirrorTransport/KcpTransport.cs b/kcp2k/Assets/kcp2k/MirrorTransport/KcpTransport.cs index 10b71b9e..ce870855 100644 --- a/kcp2k/Assets/kcp2k/MirrorTransport/KcpTransport.cs +++ b/kcp2k/Assets/kcp2k/MirrorTransport/KcpTransport.cs @@ -16,6 +16,7 @@ public class KcpTransport : Transport // common [Header("Transport Configuration")] public ushort Port = 7777; + public IPAddress LocalIP = IPAddress.IPv6Any; [Tooltip("NoDelay is recommended to reduce latency. This also scales better without buffers getting full.")] public bool NoDelay = true; [Tooltip("KCP internal update interval. 100ms is KCP default, but a lower interval is recommended to minimize latency and to scale to more networked entities.")] @@ -148,7 +149,7 @@ public override Uri ServerUri() return builder.Uri; } public override bool ServerActive() => server.IsActive(); - public override void ServerStart() => server.Start(Port); + public override void ServerStart() => server.Start(Port, LocalIP); public override void ServerSend(int connectionId, int channelId, ArraySegment segment) { // switch to kcp channel.