c# - 如何获取用于访问互联网的网络适配器的IP地址

标签 c# .net

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

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

它运行良好,但今天它失败了,因为我要查找的 IP 地址不是此地址列表中的第一个,而是第三个(因为我有 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);

您只需将 “本地连接” 替换为您在 Control Panel\Network and Internet\Network Connections< 中的适配器名称

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

相关文章:

c# - 可维护性的设计模式问题

c# - 在 ViewModel 中构建和记录您的 IObservables

.net - 多开发人员环境中 PFX 文件的最佳实践

c# - List.Sort() by Comparison 的性能是否优于自定义 IComparer?

c# - 从外部运行 Visual Studio 测试项目

c# - 无法加载类型 ServiceCollectionExtensions

c# - RestSharp 单元测试 NUnit Moq RestResponse 空引用异常

C# 获取主音量级别/百分比

c# - 有人还在 C# 中使用 [goto] 吗?如果是,为什么?

C# - 覆盖事件处理程序 - 添加参数