diff --git a/src/dotnet/src/Mil.Navy.Nrl.Norm/NormNode.cs b/src/dotnet/src/Mil.Navy.Nrl.Norm/NormNode.cs index 46dba7a..19dcdb4 100644 --- a/src/dotnet/src/Mil.Navy.Nrl.Norm/NormNode.cs +++ b/src/dotnet/src/Mil.Navy.Nrl.Norm/NormNode.cs @@ -1,5 +1,4 @@ -using Mil.Navy.Nrl.Norm.Buffers; -using System.Net; +using System.Net; using System.Runtime.InteropServices; namespace Mil.Navy.Nrl.Norm @@ -43,29 +42,21 @@ namespace Mil.Navy.Nrl.Norm /// /// The current network source address detected for packets received from remote NORM sender. /// - public IPEndPoint Address + public unsafe IPEndPoint Address { get { var bufferLength = 256; - using var buffer = ByteBuffer.AllocateDirect(bufferLength); - int port; + var buffer = stackalloc byte[bufferLength]; + var addrBuffer = (nint)buffer; - unsafe + if (!NormNodeGetAddress(_handle, addrBuffer, ref bufferLength, out int port)) { - byte* addrBuffer = null; - buffer.AcquirePointer(ref addrBuffer); - if (!NormNodeGetAddress(_handle, (nint)addrBuffer, ref bufferLength, out port)) - { - throw new IOException("Failed to get node address"); - } + throw new IOException("Failed to get node address"); } - var addressBytes = new byte[bufferLength]; - buffer.ReadArray(0, addressBytes, 0, bufferLength); - var ipAddressText = string.Join('.', addressBytes); - var ipAddress = IPAddress.Parse(ipAddressText); - + var addressBytes = new ReadOnlySpan(buffer, bufferLength); + var ipAddress = new IPAddress(addressBytes); return new IPEndPoint(ipAddress, port); } }