如何获取用于访问Internet的网络适配器的IP地址

bet*_*eta 6 .net c#

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

IPAddress ip = System.Net.Dns.GetHostByName(Environment.MachineName).AddressList[0];
Run Code Online (Sandbox Code Playgroud)

它工作正常,但今天它失败了,因为我正在寻找的IP地址不是这个地址列表中的第一个,而是第三个(因为我有两个虚拟机在运行,而且这两个都创建了一个虚拟适配器).

任何建议将不胜感激.

Ale*_*ici 8

IPAddress ip = System.Net.Dns.GetHostEntry(Environment.MachineName).AddressList.Where(i => i.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

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

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);
Run Code Online (Sandbox Code Playgroud)

你只需要替换"Local Area Connection"你的适配器的名称Control Panel\Network and Internet\Network Connections