Как узнать свой host и IP-адрес на C#

Создадим простенькую программку, которая сможет узнать имя host’a и IP текущего компьютера.

Для начала разберемся в определениях.

host – это один определенный компьютер или сервер, подключенный к конкретной сети. Если нужно подключиться к локальной сети или к глобальной сети Интернет, то для этого понадобится хост и его IP-адрес.

IP-адрес – это уникальный адрес одной конкретной компьютерной сети. IP-адрес  преимущественно состоит из четырёх чисел, разделенных между собой точкой. Нужен он нам для того, чтобы другие компьютеры или сервера могли распознать наш запрос, отправить его по месту назначения, а затем переслать обратно полученную информацию.

Итак, для начала создадим форму Windows Forms. Она незамысловатая: всё, что нам понадобится – это 2 Label’a и 2 TextBox’a.

Как узнать свой host и IP-адрес на C#

Затем нажимаем правой кнопкой мыши на форме и выбираем пункт: “Перейти к коду”.

Для начала нам нужно подключить директиву System.Net, которая позволяет программировать, используя различные сетевые протоколы. Иными словами, разрешает программирование для интернета. Подключаем её, используя using, в самом начале кода, среди прочих директив и библиотек. Примерно так:

Отлично, теперь мы можем использовать различные сетевые протоколы. Например, протолок IP.

Теперь мы получим наш host и IP следующим образом:

Пишем мы эти строки в теле функции, отвечающей за загрузку формы (внутри кавычек private void Form1_Load(object sender, EventArgs e)). То есть при загрузке формы (при запуске программы), данные сразу поступят в неё.

Разберем, что мы написали. Для начала мы объявили переменную с именем Host, у которой тип данных string, т.е. строковой тип. Это означает, что всё, что записано в нашей переменной представлено в виде обычной строки (неизвестно, находятся ли там внутри буквы, какие-либо символы или числа).

Далее мы говорим программе, что надо записать в эту переменную. Нам нужен хост, поэтому мы прописываем как бы “путь”, по которому мы сможем его получить.

Сначала обращаемся к директиве System.Net, то есть подключаемся к сетевым протоколам. Затем через точку пишем Dns. Этот классом мы говорим, что хотим обратиться к определенному протоколу – протоколу IP. Затем тоже через точку пишем GetHostName. Дословно в английского это переводится как “Получить имя хоста”, что нам и нужно. Теперь в переменной Host записано имя нашего хоста. Примерно таким же образом получаем IP-адрес.

Создаем ещё одну переменную IP такого же формата string. Далее создаём “путь” к получению IP-адреса. System.Net.Dns. уже знакомы нам. Далее идёт GetHostByName(Host). Примерно переводится как “получить хост по имени”. Дело в том, что чтобы нам получить IP-адрес, нужно указать сначала его хост, что мы и делаем, указывая имя нашего хоста в скобках переменной Host (как мы помним, именно там он у нас и записан). Далее мы пишем массив свойств AddressList[0], в который мы и получаем наш IP-адрес. ToString() в конце мы пишем из-за того, что нам надо перевести массив с нашим адресом в строковой формат, чтобы наш адрес успешно записался в строковой формат переменной IP.

Итак, мы получили наш хост и наш IP-адрес.

Остаётся лишь вывести их в форму для того, чтобы пользователь смог увидеть их.
Поэтому ниже мы пишем:

В первой строке мы записываем в textBox1 имя нашего хоста.

Во второй – в textBox2 записываем наш IP-адрес.

Проверяем:

Как узнать свой host и IP-адрес на C#

Всё работает.

Исходник программы, распознающий host и IP-адрес на C#:

Скачать исходник
Как узнать свой host и IP-адрес на C#
4 (80%) 5 votes

Поделиться в соц. сетях:

6 комментария(ев) к статье “Как узнать свой host и IP-адрес на C#

  1. qpMAXqp

    Спасибо большое за урок! Оч нравится вся эта интернет тема
    Подскажите, а можно ли сменить имя своего host’a? Также, например, используя c#?

    1. admin

      Спасибо за Ваш отзыв!
      Мне кажется вряд ли можно средствами языка программирования сменить имя хоста, и, следовательно, NET не предоставляет для этого публичного API. Ибо данная возможность несёт в себе потенциальные проблемы для пользователя в сети.

    1. admin

      Например, так:

      string macAddress = “”;

      foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
      {
      if (nic.OperationalStatus == OperationalStatus.Up)
      {
      macAddress = nic.GetPhysicalAddress().ToString();

      break;
      }
      }

      Console.WriteLine(macAddress);

  2. Kirill

    В программе из статьи:
    string Host = System.Net.Dns.GetHostName(); // имя
    string IP = System.Net.Dns.GetHostByName(Host).AddressList[0].ToString(); // ip

    textBox1.Text = Host;
    textBox2.Text = IP;
    textBox3.Text = Mac; ??? а вот как мак-адрес вывести в textBox3?

    1. admin

      Возьмите код, который я Вам прислал выше, добавьте его в программу. И чтобы вывести в textBox3 Mac-адрес, используйте выражение:

      textBox3.Text = macAddress;

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">