Создадим простенькую программку, которая сможет узнать имя host’a и IP текущего компьютера.
Для начала разберемся в определениях.
host — это один определенный компьютер или сервер, подключенный к конкретной сети. Если нужно подключиться к локальной сети или к глобальной сети Интернет, то для этого понадобится хост и его IP-адрес.
IP-адрес — это уникальный адрес одной конкретной компьютерной сети. IP-адрес преимущественно состоит из четырёх чисел, разделенных между собой точкой. Нужен он нам для того, чтобы другие компьютеры или сервера могли распознать наш запрос, отправить его по месту назначения, а затем переслать обратно полученную информацию.
Итак, для начала создадим форму Windows Forms. Она незамысловатая: всё, что нам понадобится — это 2 Label’a и 2 TextBox’a.
Затем нажимаем правой кнопкой мыши на форме и выбираем пункт: «Перейти к коду».
Для начала нам нужно подключить директиву System.Net, которая позволяет программировать, используя различные сетевые протоколы. Иными словами, разрешает программирование для интернета. Подключаем её, используя using, в самом начале кода, среди прочих директив и библиотек. Примерно так:
1 2 3 4 5 6 7 8 9 10 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; |
Отлично, теперь мы можем использовать различные сетевые протоколы. Например, протолок IP.
Теперь мы получим наш host и IP следующим образом:
1 2 |
string Host = System.Net.Dns.GetHostName(); string IP = System.Net.Dns.GetHostByName(Host).AddressList[0].ToString(); |
Пишем мы эти строки в теле функции, отвечающей за загрузку формы (внутри кавычек 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-адрес.
Остаётся лишь вывести их в форму для того, чтобы пользователь смог увидеть их.
Поэтому ниже мы пишем:
1 2 |
textBox1.Text = Host; textBox2.Text = IP; |
В первой строке мы записываем в textBox1 имя нашего хоста.
Во второй — в textBox2 записываем наш IP-адрес.
Проверяем:
Всё работает.
Исходник программы, распознающий host и IP-адрес на C#:
Скачать исходникПоделиться в соц. сетях:
Спасибо большое за урок! Оч нравится вся эта интернет тема
Подскажите, а можно ли сменить имя своего host’a? Также, например, используя c#?
Спасибо за Ваш отзыв!
Мне кажется вряд ли можно средствами языка программирования сменить имя хоста, и, следовательно, NET не предоставляет для этого публичного API. Ибо данная возможность несёт в себе потенциальные проблемы для пользователя в сети.
Как можно вывести Mac-адрес? Спасибо.
Например, так:
string macAddress = «»;
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
if (nic.OperationalStatus == OperationalStatus.Up)
{
macAddress = nic.GetPhysicalAddress().ToString();
break;
}
}
Console.WriteLine(macAddress);
В программе из статьи:
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?
Возьмите код, который я Вам прислал выше, добавьте его в программу. И чтобы вывести в textBox3 Mac-адрес, используйте выражение:
textBox3.Text = macAddress;