Справочник по C#

    Исходники по языку программирования CSharp

    Получаем все IP-адреса локальной машины (C#): Справочник по C#

    /
    /
    /
    464 Views


          Зачем может понадобиться узнать IP-адреса на локальной машине? Компьютер может иметь несколько IP адресов с одной NIC, и при создании сокетного приложения не всегда хочется привязываться (биндится) ко всем айпишникам. Например у нас есть множество серверов и на каждом по крайней мере 32 айпишника и по несколько сетевых интерфейсов. Есть сервисы, работающие на 80 порту и есть необходимость запускать IIS тоже на 80 порту. Соответственно, нужно развести сервисы и IIS строго по определённым IP адресам.


          Чтобы выполнить такую задачу, необходимо перечислисть все айпишники на машине и связать каждое приложение с определённым адресом в зависимости от существующей маршрутизации для каждой подсети. Однако пул сокетов в IIS по умолчанию захватывает ВСЕ IP адреса на локальной машине. Поэтому, чтобы привязать новый сервис к определённому айпишнику, необходимо сперва отключить в IIS пул сокетов. Можно привести другой пример необходимости получения списка IP адресов, когда в локальном копьютере установлено две сетвых карты (одна смотрит в интернет, а другая – в локальную сеть) и необходимо чтобы Ваше приложение слушало сокет только на сетевом интерфейсе, подключённом к интернету.

          В любом случае, существует стандартный подход перечисления всех локальных IP-адресов. Ниже приведён пример иллюстрирующий это на C#:

    using System;
    using System.Net;
    
    namespace GetIPCS
    {
    /// 
    /// Получаем IP адреса локальной машины
    /// 
    class classGetIPCS
    {
    /// 
    /// Получаем IP адреса локальной машины
    /// 
    [STAThread]
    static void Main(string[] args)
    {
    // Получаем имя компьютера
    String strHostName = Dns.GetHostName();
    Console.WriteLine("Host Name: " + strHostName);
    
    // Ищем хост по имени
    IPHostEntry iphostentry = Dns.GetHostByName(strHostName);
    
    // Перечисляем IP адреса
    int nIP = 0;
    foreach(IPAddress ipaddress in iphostentry.AddressList)
    {
    Console.WriteLine("IP #" + ++nIP + ": " +
    ipaddress.ToString());
    }
    }
    }
    }
    


    Источник sources.ru

    Получаем все IP-адреса локальной машины (C#): Справочник по C#

    0.00 (0%) 0 votes

    moyadcode13
    • Facebook
    • Twitter
    • Google+
    • Linkedin
    • Pinterest