解决方案
我有一些麻烦与WMI(似乎一个不能在Win32_IP4RouteTable一个接口索引之间与实际设备相关联; MSDN文档是错误的,以及其它更多的hackish技术不能在某些计算机)。
所以,我选择使用的非托管 GetBestRoute ,这实际上为我节省了很多时间,因为它允许Windows做自己的路由决定,并返回下一跳的IP地址和网卡的标识,导致该地址。它也比对WMI运行查询快了不少。
然后,您可以寻找通过的 GetAdaptersInfo 。
希望它可以帮助...
其他提示
物理地址由地址解析协议 - 只是发的 ARP Reuest 的与IP地址来解决。
如果目的地不在本地网络中,数据包必须被发送到标准网关和一个必须执行的ARP请求的标准网关。标准网关可以通过使用从 System.Net获得.NetworkInformation 命名空间。
NetworkInterface.GetAllNetworkInterfaces()[0].GetIPProperties().GatewayAddresses
完全予以解决了办法就是执行命令"arp-a"和阅读和分析结果的命令(使用 ARP 高速缓存已经举办的Windows)。
否则,需要包括ARP在你的协议栈。这是你的系统本身的工作来找出发送的框架。或者最后,如果你不担心被低效率,可以将以太网络的目标为:FF:FF:FF:FF:FF:FF和洪水每个人都在同一个局域网,因为你。当一些反应或者你会得到一个分组,缓自己有适当的目的地。
就个人而言,如果你没有的洪水每个人的方法在我的网络,我会伤害你,但是这取决于你的情况这可能是一个相当容易破解。但是,做一个100%完整堆的落实是相当复杂,因为有很多边缘的情况下,应以及支持(诸如装卸代理ARP,免费ARP,等等)。
不隶属于 StackOverflow