Esempio n. 1
0
        /// <summary>
        /// Builds a lookup table for the local network adapters.
        /// </summary>
        /// <returns>The created lookup table.</returns>
        public static IPLookupTable CreateLocal()
        {
            IPLookupTable result = new IPLookupTable();

            NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();

            foreach (IPInterfaceProperties adapter in adapters.Where(x => x.NetworkInterfaceType != NetworkInterfaceType.Loopback).Select(x => x.GetIPProperties()))
            {
                string ipv4 = adapter.UnicastAddresses.FirstOrDefault(x => x.Address.AddressFamily == AddressFamily.InterNetwork).Address.ToString();
                string ipv6 = adapter.UnicastAddresses.FirstOrDefault(x => x.Address.AddressFamily == AddressFamily.InterNetworkV6).Address.ToString();

                result.Add(ipv4, ipv6);
            }

            return(result);
        }
Esempio n. 2
0
        private static async Task <string?> GetLocalIPv6Async(bool recurse)
        {
            string?ip = await GetAsync(IPv6LocalRetriever, TryGetLocalV6Async).ConfigureAwait(false);

            if (ip != null)
            {
                return(ip);
            }

            if (recurse)
            {
                string?ip4 = await GetLocalIPv4Async(false).ConfigureAwait(false);

                if (ip4 != null)
                {
                    return(IPLookupTable.CreateLocal().GetIPv6(ip4));
                }
            }

            return(IPLookupTable.CreateLocal().GetIPv6Addresses().FirstOrDefault());
        }
Esempio n. 3
0
        private static string?GetLocalIPv6(bool recurse)
        {
            string?ip = Get(IPv6LocalRetriever, TryGetLocalV6);

            if (ip != null)
            {
                return(ip);
            }

            if (recurse)
            {
                string?ip4 = GetLocalIPv4(false);

                if (ip4 != null)
                {
                    return(IPLookupTable.CreateLocal().GetIPv6(ip4));
                }
            }

            return(IPLookupTable.CreateLocal().GetIPv6Addresses().FirstOrDefault());
        }
Esempio n. 4
0
 /// <summary>
 /// Gets the local IPv6 addresses synchronously.
 /// </summary>
 /// <returns>Local IPv6 addresses that can be found.</returns>
 public static string[] GetLocalIPv6s()
 => IPLookupTable.CreateLocal().GetIPv6Addresses();