public async Task ObtainIPAddressAsync() { string ip = RefImplementation(); NetworkAddressState state = await SimpleTCPHelper.GetActiveIPv4AddressAsync(); Assert.AreEqual(ip, state.Address.ToString()); }
/// <summary> /// Returns active IPv4 Address of this computer /// </summary> public static async Task <NetworkAddressState> GetActiveIPv4AddressAsync(int timeoutMs = 2000) { using Socket socket = new(AddressFamily.InterNetwork, SocketType.Dgram, 0); Task timeout = Task.Delay(timeoutMs); try { await Task.WhenAny(timeout, socket.ConnectAsync("8.8.8.8", 80)); } catch (SocketException) { return(NetworkAddressState.Fail()); } return(timeout.IsCompleted ? NetworkAddressState.Fail() : NetworkAddressState.Connected(((IPEndPoint)socket.LocalEndPoint).Address)); }