不同系统获取本地IP,求高手
string registIp = ""; string machineName = Environment.MachineName; string hostName = Dns.GetHostName(); IPHostEntry hostEntry = Dns.GetHostEntry(hostName); if (hostEntry.AddressList[0].AddressFamily.ToString() == "InterNetwork") { registIp = hostEntry.AddressList[0].ToString(); } else if (hostEntry.AddressList[0].AddressFamily.ToString() == "InterNetworkV6") { registIp = hostEntry.AddressList[1].ToString(); }
string registIp = "";string machineName = Environment.MachineName;string hostName = Dns.GetHostName();IPHostEntry hostEntry = Dns.GetHostEntry(hostName);for (int i = 0; i < hostEntry.AddressList.Length; i++){ if (hostEntry.AddressList[i].AddressFamily == AddressFamily.InterNetwork) { registIp = hostEntry.AddressList[i].ToString(); break; }}
[解决办法]
用tcp连接获取ip比较靠谱一点
System.Net.NetworkInformation.TcpConnectionInformation connection= Array.FindAll( System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections(), o => !System.Net.IPAddress.IsLoopback(o.LocalEndPoint.Address)).FirstOrDefault();if (connection != null){ string ip = connection.LocalEndPoint.Address.ToString();}