Главная > Программирования сетевых взаимодействий в Java
<< Предыдущий параграф Следующий параграф >>
Пред.
След.
Макеты страниц

Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше

Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике

1.2. Класс InetAddress

Класс InetAddress используется для инкапсуляции как числового IP-адреса, так и доменного имени для этого адреса. Взаимодействие осуществляется с классом, используя имя IP-хоста. Класс InetAddress может работать как с адресами IPv4, так и с IPv6.

Класс InetAddress не имеет конструкторов. Чтобы создать объект InetAddress, вы должны использовать один из доступных методов-фабрик. Методы-фабрики (factory method) - это просто соглашение, в соответствии с которым статические методы класса возвращают экземпляр этого класса. Это делается вместо перегрузки конструктора с различными списками параметров, когда наличие уникальных имен методов делает результат более ясным. Ниже приведены три часто используемых метода-фабрики InetAddress.

static InetAddress getLocalHost()

static InetAddress getByName(String hostName)

static InetAddress[] getAllByName(String hostName)

Метод getLocalHost() просто возвращает объект InetAddress, представляющий локальный хост. Метод getByName() возвращает InetAddress хоста, чье имя ему передано. Если эти методы оказываются не в состоянии получить имя хоста, они возбуждают исключение UnknownHostException.

Метод-фабрика getAllByName() возвращает массив InetAddress, представляющий все адреса, в которые преобразуется конкретное имя. Он также возбуждает исключение UnknownHostException в случае, если не может преобразовать имя в хотя бы один адрес.

InetAddress также включает фабричный метод getByAddress(), который принимает IP-адрес и возвращает объект InetAddress. Причем могут использоваться как адреса IPv4, так и IPv6.

В следующем примере распечатываются адреса и имена локальной машины, а также двух широко известных Internet-сайтов.

// Демонстрация применения InetAddress.

package iad; import java.net.*;

class iad {

    public static void main(String args[]) throws UnknownHostException {

        InetAddress Address = InetAddress.getLocalHost();

        System.out.println(Address);

        Address = InetAddress.getByName("ulstu.ru");

        System.out.println(Address);

        InetAddress SW[] = InetAddress.getAllByName("www.microsoft.com");

        for (int i=0; i<SW.length; i++)

            System.out.println(SW[i]);

    }

}

Ниже показан вывод, сгенерированный этой программой (вывод, который вы увидите на своем компьютере, может несколько отличаться).

home/10.250.0.172

ulstu.ru/62.76.34.54

www.microsoft.com/65.55.21.250

Поиск Интернет-адресов осуществляется в серии иерархических каптированных служб. Это значит, что ваш локальный компьютер может получить определенное отображение имени на IP-адрес автоматически как для себя, так и для ближайших серверов. Для всех прочих имен он может обращаться к DNS-серверам, откуда получит информацию об IP-адресах. Если такой сервер не имеет информации об определенном адресе, он может обратиться к следующему удаленному сайту и запросить эту информацию у него. Это может продолжаться вплоть до корневого сервера, и упомянутый процесс может потребовать длительного времени, так что разумно построить структуру вашего кода таким образом, чтобы информация об IP-адресах локально кэшировалась, и ее не приходилось искать каждый раз заново.

Основные методы класса InetAddress

boolean equals(Object other). Возвращает true, если объект имеет тот же адрес Интернет, что и other.

byte[] getAddress(). Возвращает байтовый массив, представляющий IP-адрес в порядке байт сети.

String getHostAddress(). Возвращает строку, представляющую адрес хоста, ассоциированного с объектом InetAddress.

String getHostName(). Возвращает строку, представляющую имя хоста, ассоциированного с объектом InetAddress.

boolean isMulticastAddress(). Возвращает true, если адрес является групповым, в противном случае возвращает false.

String toString(). Возвращает строку, включающую имя хоста и IP-адрес для удобства.

Categories

1
email@scask.ru