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

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

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

任何建议将不胜感激。

最佳答案

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

关于c# - 如何获取用于访问实习生的网络适配器的IP地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13725844/

10-12 12:36
查看更多