当前位置:  开发笔记 > 编程语言 > 正文

识别活动网络接口

如何解决《识别活动网络接口》经验,为你挑选了2个好方法。

在.NET应用程序中,如何识别用于与给定IP地址通信的网络接口?

我在具有多个网络接口,IPv4和v6的工作站上运行,我需要获取用于流量到我给定数据库服务器的"正确"接口的地址.



1> 小智..:

最简单的方法是:

UdpClient u = new UdpClient(remoteAddress, 1);
IPAddress localAddr = ((IPEndPoint)u.Client.LocalEndPoint).Address;

现在,如果您想要NetworkInterface对象,您可以执行以下操作:

foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
   IPInterfaceProperties ipProps = nic.GetIPProperties();
   // check if localAddr is in ipProps.UnicastAddresses
}


另一种选择是使用P/Invoke并调用GetBestInterface()来获取接口索引,然后再次遍历所有网络接口.和以前一样,你必须挖掘GetIPProperties()才能到达IPv4InterfaceProperties.Index酒店.


经过一些研究后,我发现"最佳"答案意味着:1.具有匹配路由/默认网关的适配器的第一个IP组合具有最低的度量.2.如果是度量标准,则绑定顺序最低的适配器将获胜.

2> Coderer..:

这些都不会给OP提供他正在寻找的信息 - 他想知道哪个接口将用于到达给定目的地.执行所需操作的一种方法是使用System.Diagnostics.Process类转发到route命令,然后屏幕截取输出. route PRINT (destination IP)会给你一些可用的东西.这可能不是最好的解决方案,但它是我现在唯一可以给你的解决方案.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有