Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

2. Протокол tcp/ip, адрес ip и класс InetAddress

Идея сокетов неразрывно связана с TCP/IP (Transmission Contol Protocol/ Internet Protocol - Протокол контроля передачи/Межсетевой протокол Интернет ) - протоколом, использующимся в Internet. По существу сокет является непрерывной связью данных между двумя хостами сети (все компьютеры, подключенные к сети, называются узлами или хостами (host)). Сокет определяется сетевым адресом конечного компьютера (endpoint), а также портом на каждом хосте. Компьютеры в сети направляют приходящие из сети потоки данных в специальные принимающие программы, присваивая каждой программе отдельный номер. - порт программы. Аналогично, когда генерируются выходные данные, программе, инициализирующей передачу данных, присваивается номер порта для транзакции. В TCP/IP резервируются определенные номера портов для специальных протоколов - например, 25 для SMTP и 80 для HTTP. Все номера портов, меньшие 1024, зарезервированы на каждом хосте для системного администратора.

Каждый хост в сети, осуществляющей связь по протоколу TCP/IP (в том числе и Internet) присвоен уникальный численный идентификатор, называемый IP-адресом. IP-адрес состоит из четырех десятичный чисел в диапазоне от 0 до 255 и в общем случае представляется числом с точками - например, 194.84.124.60.

Фактически адрес IP является 32-разрядным числом (4 байта), а упомянутые числа представляют собой отдельные байты адреса IP.

Так как работать с цифрами удобно только компьютеру, была придумана система доменных адресов (система DNS - Domain Name System). При использовании этой системы адресам IP ставится в соответствие так называемый доменный адрес, такой, как www.vvsu.ru. Человек задает имя хоста, и его компьютер запрашивает местный DNS-сервер, который определяет по данному имени IP-адрес.

Для работы с IP-адресами в библиотеке классов Java имеется класс InetAddress. Заметим, что при создании сокета можно задавать либо имя хоста в форме строки, либо IP-адрес в форме InetAddress. InetAddress для созданного уже сокета можно определить при помощи метода getInetAddress() класса сокетов Socket. Знать этот адрес бывает полезно, например, при необходимости открытия нового соединения с той же машиной. Тогда немного быстрее будет вместо имени хоста воспользоваться InetAddress, чтобы избежать дополнительного преобразования DNS.

Рассмотрим наиболее интересные методы класса InetAddress. Прежде всего необходимо создать объект класса InetAddress. Эта процедура выполняется не с помощью оператора new, а с применением статических методов getLocalHost(), getByName() и getAllByName.

Создание объекта класса InetAddress для локального узла

Метод getLocalHost() создает объект класса InetAddress для локального узла, то есть для той рабочей станции, на которой выполняется приложение Java. Так как этот метод статический, то его можно вызывать, используя имя класса InetAddress:

InetAddress iaLocal;

iaLocal=InetAddress.getLocalHost();

Создание объекта класса InetAddress для удаленного узла

В том случае, когда интерес представляет удаленный узел сети Internet или корпоративной сети Intranet, объект класса InetAddress для него можно создать с помощью методов getByName() или getAllByName(). Первый из них возвращает по имени узла узла, а второй - массив всех адресов IP, связанных с данным узлом. Если узла с таким не существует, при выполнении обоих методов возникает исключение UnknownHostException.

Методам getByName() или getAllByName() можно передавать не только имя узла, такое, как например www.vvsu.ru, но и строку адреса IP в виде четырех десятизначных чисел, разделенных точками.

Другие методы класса InetAddress

После создания объекта класса для локального или удаленного узла можно использовать и другие методы класса InetAddress.

Метод getAddress() возвращает массив из четырех байт IP-адреса объекта. Байт с нулевым индексом массива возвращает старший байт адреса IP.

С помощью метода getHostName можно определить имя узла, для которого был создан объект класса InetAddress.

Метод toString() возвращает текстовую строку, которая содержит имя узла, разделитель / и адрес IP в виде четырех десятичных чисел, разделенных точками.

Метод equals() предназначен для сравнения адресов IP как объектов класса InetAddress.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]