using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; namespace Aitex.Core.Utilities { public static class Network { const string IpPrefix = "192.18."; static string _localIP; public static string LocalIP { get { if (string.IsNullOrWhiteSpace(_localIP)) { string hostName = Dns.GetHostName(); IPHostEntry me = Dns.GetHostEntry(hostName); IPAddress[] ips = me.AddressList; Func predicateIPV4 = ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork; Func predicate192 = ip => predicateIPV4(ip) && ip.ToString().StartsWith(IpPrefix); _localIP = ips.Any(predicate192) ? ips.First(predicate192).ToString() : ips.Any(predicateIPV4) ? ips.First(predicateIPV4).ToString() : (ips.Length > 0 ? ips[0]: new IPAddress(0x0)).ToString(); } return _localIP; } } } }