Классы для работы с сетью в .NET Framework обеспечивают простой доступ к сетевым функциям библиотеки Winsock, встроенной в Windows. .NET определяет два класса в пространстве имен System.Net для работы с IP-адресами: IPAddress и IPEndPoint.
Объект IPAddress используется для представления одиночного IP-адреса. Этот объект может затем использоваться при обращении к методам сокетов.
Метод | Описание |
---|---|
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()); } }
Аналогом структуры sockaddr_in в Unix в .NET Framework является объект IPEndPoint, представляющий конкретную комбинацию IP-адреса и порта. Объект IPEndPoint используется при связывании сокетов с локальными адресами или при соединении с удаленными адресами. Для создания объектов IPEndPoint используются два конструктора:
IPEndPoint(long address, int port) IPEndPoint(IPAddress address, int port)
Метод | Описание |
---|---|
Create | Создает объект EndPoint из объекта SocketAddress |
Equals | Сравнивает два объекта IPEndPoint |
GetHashCode | Возвращает хэш-значение для объекта IPEndPoint |
GetType | Возвращает тип объекта IPEndPoint |
Serialize | Создает объект SocketAddress, соответствующий объекту EndPoint |
ToString | Создает строковое представление объекта IPEndPoint |
Класс SocketAddress - это специальный класс в пространстве имен System.Net, представляющий сериализованную версию объекта IPEndPoint. Этот класс используется для сохранения экземпляра объекта IPEndPoint, который затем может быть воссоздан с помощью метода IPEndPoint.Create().
В дополнение к перечисленным методам класс 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()); } }