6

我想知道是否有一种可靠的方法可以在我的机器中找到用于访问 Internet 的网络适配器的 IPv4 地址(因为这是我想将我的服务器绑定到的那个)。我曾经获得这样的本地 IP 地址列表:

IPAddress ip = System.Net.Dns.GetHostByName(Environment.MachineName).AddressList[0];

它运行良好,但今天失败了,因为我要查找的 IP 地址不是此地址列表中的第一个,而是第三个(因为我有 2 个虚拟机正在运行,并且它们都创建了一个虚拟适配器)。

任何建议将不胜感激。

4

1 回答 1

8
IPAddress ip = System.Net.Dns.GetHostEntry(Environment.MachineName).AddressList.Where(i => i.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).FirstOrDefault();

作为替代方式,您可以使用:

using System.Net.NetworkInformation;

//...

var local = NetworkInterface.GetAllNetworkInterfaces().Where(i => i.Name == "Local Area Connection").FirstOrDefault();
var stringAddress = local.GetIPProperties().UnicastAddresses[0].Address.ToString();
var ipAddress = IPAddress.Parse(stringAddress);

您只需将"Local Area Connection"其中的适配器名称替换为Control Panel\Network and Internet\Network Connections

于 2012-12-05T14:56:30.803 回答