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

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

1023
0


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


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

ЧИТАТЬ ТАКЖЕ:  Переименовываем заголовок окна приложения при запуске: Справочник по C#

      В любом случае, существует стандартный подход перечисления всех локальных 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

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь