【问题标题】:Retrieving self ip address when multiple network adapters are in use使用多个网络适配器时检索自身 IP 地址
【发布时间】:2013-06-12 13:36:37
【问题描述】:

在要安装我的应用程序的机器中,有多个网卡,其中一些用于在内部网络中通信,而其中只有一个用于向外通信。

任何人都知道如何在 c# 中检索特定网络适配器的 ip?

我看过很多关于如何检索简单 IP 地址的示例,但没有提到具有多个适配器的机器。

我应该补充一点,即使特定适配器与网络断开连接并且所有适配器都使用静态 IP 地址,此解决方案也必须有效。

【问题讨论】:

    标签: c# .net network-programming ip-address


    【解决方案1】:

    你可以这样做:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.NetworkInformation;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication1
    {
    internal class Program
    {
        private static void Main(string[] args)
        {
    
            NetworkInterface netif =
                NetworkInterface
               .GetAllNetworkInterfaces()
               .Single(networkInterface => networkInterface.Name.ToLower() =="loopback pseudo-interface 1");
    
    
            IPInterfaceProperties properties = netif.GetIPProperties();
            UnicastIPAddressInformationCollection unicastIpAddress = properties.UnicastAddresses;
    
            Console.Write(netif.Name + ": ");
            Console.WriteLine(unicastIpAddress[1].Address);
    
    
    
            Console.ReadLine();
    
            }
    
        }
    
    }
    

    【讨论】:

    • 据我了解,linq 表达式将返回环回网络接口,而不是真正的适配器。您是否建议我将中继连接名称?不幸的是,它不是预先知道的
    • 是的,但它也适用于其他网络适配器,我测试过。你的问题是,我能得到那个特定适配器的 IP 地址吗?所以,我得到了特定适配器的 IP 地址。
    • 您可以检查适配器是否是子网的一部分。这能解决你的问题吗?
    • 目标是使用给定信息从适配器中检索 IP 地址,如果我应该说明该特定适配器的更多信息。至于子网,您是指适配器的子网掩码吗?如果不是,我不明白你的意思。
    猜你喜欢
    • 2011-06-25
    • 2013-05-20
    • 2023-04-08
    • 2018-01-26
    • 1970-01-01
    • 2014-03-18
    • 2013-05-24
    • 2022-03-03
    • 1970-01-01
    相关资源
    最近更新 更多