Довольно распространенная задача при разработке приложений C#, работающих с сетью — получение IP адреса своего компьютера. Сегодня мы рассмотрим несколько вариантов того, как получить свой IP-адрес на C#. Отмечу, что те способы получения IP адреса. которые прекрасно работают в WinForms, могут абсолютно не работать, например, в UWP и наоборот.
Для выполнения задачи нам понадобится подключить в проект пространство имен System.Net. Код приложения будет следующим:
using System;
using System.Net;
namespace NetFrameworkConsole
{
internal class Program
{
static void Main(string[] args)
{
string host = Dns.GetHostName();
Console.WriteLine($"Имя компьютера: {host}");
IPAddress[] addresses = Dns.GetHostAddresses(host);
foreach (IPAddress address in addresses)
{
Console.WriteLine($"Адрес: {address} Семейство: {address.AddressFamily}");
}
Console.ReadKey();
}
}
}
здесь, в начале, мы получаем имя компьютера в сети, а, затем — список всех его адресов и в цикле foreach выводим адрес и семейство к которому этот адрес относится. Результат выполнения программы будет следующим:
Адрес: fe80::5dec:1b50:506e:8c2b%16 Семейство: InterNetworkV6
Адрес: 192.168.1.36 Семейство: InterNetwork
Отметим, что для адресов IPv4 определяется семейство InterNetwork, а для IPv6 — InterNetworkV6. Таким образом, если нам необходимо получить, например, только IPv4 адрес, то можно воспользоваться тем же LINQ и сразу получить необходимый нам адрес:
using System;
using System.Net;
using System.Linq;
namespace NetFrameworkConsole
{
internal class Program
{
static void Main(string[] args)
{
string host = Dns.GetHostName();
Console.WriteLine($"Имя компьютера: {host}");
IPAddress address = Dns.GetHostAddresses(host).First<IPAddress>(f=>f.AddressFamily==System.Net.Sockets.AddressFamily.InterNetwork);
if (address != null)
{
Console.WriteLine($"Адрес: {address} Семейство: {address.AddressFamily}");
}
Console.ReadKey();
}
}
}
Указанный способ получения IP адреса в C# работает не только в .NET Framework, но и в .NET Core 3.1, .NET 5 и .NET 6 без каких-либо предупреждений компилятора.