Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取用于访问internet的网络适配器的IP地址_C#_.net - Fatal编程技术网

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

C# 如何获取用于访问internet的网络适配器的IP地址,c#,.net,C#,.net,我想知道是否有一种可靠的方法可以在我的机器中找到用于访问internet的网络适配器的IPv4地址(因为这是我要将服务器绑定到的地址)。我曾经得到一个本地ip地址列表,如下所示: IPAddress ip = System.Net.Dns.GetHostByName(Environment.MachineName).AddressList[0]; 它工作得很好,但今天它失败了,因为我要查找的IP地址不是这个地址列表中的第一个,而是第三个(因为我有两个虚拟机在运行,这两个虚拟机都创建了一个虚拟适

我想知道是否有一种可靠的方法可以在我的机器中找到用于访问internet的网络适配器的IPv4地址(因为这是我要将服务器绑定到的地址)。我曾经得到一个本地ip地址列表,如下所示:

IPAddress ip = System.Net.Dns.GetHostByName(Environment.MachineName).AddressList[0];
它工作得很好,但今天它失败了,因为我要查找的IP地址不是这个地址列表中的第一个,而是第三个(因为我有两个虚拟机在运行,这两个虚拟机都创建了一个虚拟适配器)

任何建议都将不胜感激

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);

您只需在
控制面板\Network and Internet\Network Connections

中将
“Local Area Connection”
替换为适配器的名称,这个问题的答案可能会有所帮助:感谢+1的链接,我将检查GetBestInterface API函数。可能的重复不是重复的(一个具有已知的IPv4地址,另一个没有)。不幸的是,这种方法也会返回虚拟适配器的一个地址,如果您有多个网络接口,并且每个接口都连接到internet,您会选择什么?如果我将鼠标悬停在Windows任务栏中的网络图标上,它会显示类似“以太网适配器,internet访问”,这是我机器中唯一的物理适配器。我希望我的应用程序准确地找到这个适配器并使用它的地址。不幸的是,到目前为止,我尝试的所有方法都返回了其中一个虚拟适配器的地址。但是,最后一种方法如何?感谢这一种方法,但是我已经使用此解决方案成功实现了它:尽管如此,标记为您的积极支持和努力的答案!