Классы IPAddress и IPEndPoint

Классы для работы с сетью в .NET Framework обеспечивают простой доступ к сетевым функциям библиотеки Winsock, встроенной в Windows. .NET определяет два класса в пространстве имен System.Net для работы с IP-адресами: IPAddress и IPEndPoint.

IPAddress

Объект IPAddress используется для представления одиночного IP-адреса. Этот объект может затем использоваться при обращении к методам сокетов.
Методы IPAddress
МетодОписание
Equals Сравнивает два IP-адреса
GetHashCodeВозвращает хэш-код объекта
GetType Возвращает тип объекта IP-адреса
HostToNetworkOrderПреобразует байтовый порядок IP-адреса из хостового в сетевой
IsLoopBackПоказывает является ли IP-адрес адресом обратной связи
NetworkToHostOrderПреобразует байтовый порядок IP-адреса из сетевого в хостовый
ParseПреобразует строку в IP-адрес
ToStringПреобразует IP-адрес в строку, представляющую IP-адрес в десятично-точечной нотации

Метод Parse наиболее часто используется для создания объекта IPAddress по строке, содержащей десятично-точечную нотацию IP-адреса, следующим образом IPAddress newaddress = IPAddress.Parse("192.168.1.1");

Кроме того IPAddress содержит четыре поля только для чтения, представляющих специальные IP-адреса для использования в программах:

Для иллюстрации работы с объектом IPAddress и его методами рекомендуется создать и запустить программу

using System;
using System.Net;
class AddressSample
{
  public static void Main ()
  {
   IPAddress test1 = IPAddress.Parse("192.168.1.1");
   IPAddress test2 = IPAddress.Loopback;
   IPAddress test3 = IPAddress.Broadcast;
   IPAddress test4 = IPAddress.Any;
   IPAddress test5 = IPAddress.None;
   IPHostEntry ihe =
         Dns.GetHostByName(Dns.GetHostName());
   IPAddress myself = ihe.AddressList[0];
   if (IPAddress.IsLoopback(test2))
     Console.WriteLine("The Loopback address is: {0}",
             test2.ToString());
   else
   Console.WriteLine("Error obtaining the loopback address");
   Console.WriteLine("The Local IP address is: {0}\n",
            myself.ToString());
   if (myself == test2)
     Console.WriteLine("The loopback address is the same as local address.\n");
   else
     Console.WriteLine("The loopback address is not the local address.\n");
   Console.WriteLine("The test address is: {0}",
           test1.ToString());
   Console.WriteLine("Broadcast address: {0}",
           test3.ToString());
   Console.WriteLine("The ANY address is: {0}",
           test4.ToString());
   Console.WriteLine("The NONE address is: {0}",
           test5.ToString());
  }
}

IPEndPoint

Аналогом структуры sockaddr_in в Unix в .NET Framework является объект IPEndPoint, представляющий конкретную комбинацию IP-адреса и порта. Объект IPEndPoint используется при связывании сокетов с локальными адресами или при соединении с удаленными адресами. Для создания объектов IPEndPoint используются два конструктора:

IPEndPoint(long address, int port)
IPEndPoint(IPAddress address, int port)
В обоих конструкторах используются два параметра: значение IP-адреса, представленное либо как длинное целое, либо как объект IPAddress, и номер порта.
Методы IPEndPoint
МетодОписание
Create Создает объект EndPoint из объекта SocketAddress
Equals Сравнивает два объекта IPEndPoint
GetHashCodeВозвращает хэш-значение для объекта IPEndPoint
GetType Возвращает тип объекта IPEndPoint
SerializeСоздает объект SocketAddress, соответствующий объекту EndPoint
ToStringСоздает строковое представление объекта IPEndPoint

Класс SocketAddress - это специальный класс в пространстве имен System.Net, представляющий сериализованную версию объекта IPEndPoint. Этот класс используется для сохранения экземпляра объекта IPEndPoint, который затем может быть воссоздан с помощью метода IPEndPoint.Create().

В дополнение к перечисленным методам класс IPEndPoint содержит три свойства, которые могут быть установлены или получены для данного экземпляра класса.

Имеются также два поля, которые могут быть использованы с объектом IPEndPoint для получения имеющегося диапазона портов в системе.

Для иллюстрации работы с объектом IPEndPoint и его методами рекомендуется создать и запустить программу

using System;
using System.Net;
class IPEndPointSample
{
  public static void Main ()
  {
   IPAddress test1 = IPAddress.Parse("192.168.1.1");
   IPEndPoint ie = new IPEndPoint(test1, 8000);

   Console.WriteLine("The IPEndPoint is: {0}", ie.ToString());
   Console.WriteLine("The AddressFamily is: {0}", ie.AddressFamily);
   Console.WriteLine("The address is: {0}, and the port is: {1}\n", ie.Address, ie.Port);
   Console.WriteLine("The min port number is: {0}", IPEndPoint.MinPort);
   Console.WriteLine("The max port number is: {0}\n", IPEndPoint.MaxPort);

   ie.Port = 80;

   Console.WriteLine("The changed IPEndPoint value is: {0}", ie.ToString());

   SocketAddress sa = ie.Serialize();

   Console.WriteLine("The SocketAddress is: {0}", sa.ToString());
  }
}
Hosted by uCoz