Пакет java.net

Предоставляет классы для реализации сетевых приложений.

Пакет java.net можно примерно разделить на две части:

  • API низкого уровня, который работает со следующими абстракциями:

    • Адреса, которые являются сетевыми идентификаторами, например, IP-адреса.

    • Сокеты, которые являются основными двусторонними механизмами обмена данными.

    • Интерфейсы, которые описывают сетевые интерфейсы.

  • API высокого уровня, который работает со следующими абстракциями:

    • URI, которые представляют универсальные идентификаторы ресурсов.

    • URL, которые представляют универсальные указатели ресурсов.

    • Подключения, которые представляют подключения к ресурсу, на который указывает URL.

Адреса

Адреса используются во всех API java.net как идентификаторы хостов или идентификаторы конечных точек сокетов.

Класс InetAddress является абстракцией, представляющей IP-адрес (адрес интернет-протокола). У него есть два подкласса:

Однако в большинстве случаев нет необходимости работать напрямую с подклассами, так как абстракция InetAddress должна охватывать большинство необходимых функций.

Об IPv6

Не все системы поддерживают протокол IPv6, и хотя Java-стек для работы с сетями будет пытаться определить его и использовать прозрачно, когда он доступен, также можно отключить его использование с помощью системной переменной. В случае, когда IPv6 недоступен или явно отключен, Inet6Address больше не являются допустимыми аргументами для большинства сетевых операций. Хотя методы, такие как InetAddress.getByName(java.lang.String), гарантированно не возвращают Inet6Address при поиске имен хостов, при передаче литералов можно создать такой объект. В этом случае большинство методов, вызываемые с Inet6Address, будут вызывать исключение.

Сокеты

Сокеты — это средства для установления канала связи между машинами по сети. Пакет java.net предоставляет 4 типа сокетов:

Отправка и приём с помощью сокетов TCP выполняются через потоки InputStream и OutputStream, которые можно получить с помощью методов Socket.getInputStream() и Socket.getOutputStream().

Интерфейсы

Класс NetworkInterface предоставляет API для просмотра и запроса всех сетевых интерфейсов (например, Ethernet-соединение или PPP-конечная точка) локальной машины. С помощью этого класса можно проверить, настроен ли какой-либо из локальных интерфейсов для поддержки IPv6.

Обратите внимание, что все соответствующие реализации должны поддерживать как минимум один NetworkInterface объект, который должен быть подключен к сети или являться «петлевым» интерфейсом, который может обмениваться данными только с объектами на той же машине.

API высокого уровня

Некоторые классы в пакете java.net предоставляют более высокий уровень абстракции и позволяют легко получить доступ к ресурсам в сети. Эти классы:

  • URI — это класс, представляющий универсальный идентификатор ресурса, как указано в RFC 2396. Как следует из названия, это просто идентификатор и не предоставляет непосредственно средства для доступа к ресурсу.
  • URL — это класс, представляющий универсальный указатель ресурса, который является как устаревшим понятием для URI, так и средством доступа к ресурсам.
  • URLConnection создаётся из URL и является каналом связи, используемым для доступа к ресурсу, указанному в URL. Этот абстрактный класс делегирует большую часть работы обработчикам протоколов, таким как http или https.
  • HttpURLConnection — это подкласс URLConnection и предоставляет дополнительные функции, специфичные для протокола HTTP. Этот API был заменён новым API HTTP-клиента.

Рекомендуется использовать URI для идентификации ресурсов, а затем преобразовать его в URL, когда придёт время получить доступ к ресурсу. Из этого URL можно получить URLConnection для тонкого управления или напрямую получить поток InputStream.

Вот пример:

URI uri = new URI("http://java.sun.com/");
 URL url = uri.toURL();
 InputStream in = url.openStream();

Обработчики протоколов

Как уже упоминалось, URL и URLConnection зависят от обработчиков протоколов, которые должны быть присутствовать, иначе будет выброшено исключение. Это основное отличие от URI, которые только идентифицируют ресурсы и, следовательно, не нуждаются в доступе к обработчику протокола. Таким образом, хотя можно создать URI с любой схемой протокола (например, myproto://myhost.mydomain/resource/), аналогичный URL попытается инициализировать обработчик для указанного протокола; если он не существует, будет выброшено исключение.

По умолчанию обработчики протоколов загружаются динамически из стандартного расположения. Тем не менее, можно развернуть дополнительные обработчики протоколов как services. Поставщики услуг типа URLStreamHandlerProvider находятся во время выполнения, как указано в конструкторе URL.

Дополнительные спецификации

С момента:
1.0
Интерфейс Описание
ContentHandlerFactory

Этот интерфейс определяет фабрику для обработчиков содержимого.

CookiePolicy

Реализации CookiePolicy решают, какие куки следует принимать, а какие отклонять.

CookieStore

Объект CookieStore представляет хранилище куки.

DatagramSocketImplFactory

Этот интерфейс определяет фабрику для реализаций сокетов датаграмм.

FileNameMap

Простой интерфейс, который предоставляет механизм сопоставления между именем файла и строкой MIME-типа.

ProtocolFamily

Представляет семейство протоколов связи.

SocketImplFactory

Этот интерфейс определяет фабрику для реализаций сокетов.

SocketOption<T>

Параметр сокета, связанный с сокетом.

SocketOptions

Интерфейс методов для получения/установки параметров сокета.

URLStreamHandlerFactory

Этот интерфейс определяет фабрику для обработчиков протоколов потоков URL.

Класс Описание
Authenticator

Класс Authenticator представляет объект, знающий, как получить аутентификацию для сетевого соединения.

CacheRequest

Представляет каналы для хранения ресурсов в кэше ResponseCache.

CacheResponse

Представляет каналы для извлечения ресурсов из кэша ResponseCache.

ContentHandler

Абстрактный класс ContentHandler является суперклассом всех классов, которые считывают Object из URLConnection.

CookieHandler

Объект CookieHandler предоставляет механизм обратного вызова для подключения реализации политики управления состоянием HTTP в обработчик протокола HTTP.

CookieManager

CookieManager предоставляет конкретную реализацию CookieHandler, которая отделяет хранение cookie от политики, окружающей принятие и отклонение cookie.

DatagramPacket

Этот класс представляет пакет датаграмм.

DatagramSocket

Этот класс представляет сокет для отправки и получения пакетов датаграмм.

DatagramSocketImpl

Базовый абстрактный класс реализации сокетов для датаграмм и мультикаст-сокетов.

HttpCookie

Объект HttpCookie представляет HTTP cookie, который переносит информацию о состоянии между сервером и пользовательским агентом.

HttpURLConnection

URLConnection с поддержкой функций, специфичных для HTTP.

IDN

Предоставляет методы для преобразования интернационализированных доменных имён (IDN) между обычным представлением Unicode и представлением ASCII Compatible Encoding (ACE).

Inet4Address

Этот класс представляет адрес Internet Protocol версии 4 (IPv4).

Inet6Address

Этот класс представляет адрес Internet Protocol версии 6 (IPv6).

InetAddress

Этот класс представляет адрес Internet Protocol (IP).

InetSocketAddress

Этот класс реализует IP адрес сокета (IP-адрес + номер порта). Он также может быть парой (имя хоста + номер порта), в этом случае будет выполнена попытка разрешения имени хоста.

InterfaceAddress

Этот класс представляет адрес сетевого интерфейса.

JarURLConnection

URL-соединение к файлу Java ARchive (JAR) или записи в файле JAR.

MulticastSocket

Класс мультивещательного сокета полезен для отправки и получения пакетов IP-мультикаста.

NetPermission

Этот класс предназначен для различных сетевых разрешений.

NetworkInterface

Этот класс представляет сетевой интерфейс, состоящий из имени и списка IP-адресов, назначенных этому интерфейсу.

PasswordAuthentication

Класс PasswordAuthentication является контейнером данных, используемым классом Authenticator.

Proxy

Этот класс представляет настройку прокси, обычно тип (http, socks) и адрес сокета.

ProxySelector

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

ResponseCache

Представляет реализации кэшей URLConnection.

SecureCacheResponse

Представляет ответ кэша, изначально полученный с помощью безопасных средств, таких как TLS.

ServerSocket

Этот класс реализует серверные сокеты.

Socket

Этот класс реализует клиентские сокеты (также называемые просто "сокетами").

SocketAddress

Этот класс представляет адрес сокета без привязки к протоколу.

SocketImpl

Абстрактный класс SocketImpl является общим суперклассом всех классов, которые фактически реализуют сокеты.

SocketPermission

Этот класс представляет доступ к сети через сокеты.

StandardSocketOptions

Определяет стандартные опции сокета.

URI

Представляет ссылку на универсальный идентификатор ресурса (URI).

URL

Класс URL представляет собой универсальный указатель ресурса, указатель на "ресурс" в Всемирной паутине.

URLClassLoader

Этот загрузчик классов используется для загрузки классов и ресурсов из пути поиска URL, которые ссылаются как на JAR-файлы, так и на каталоги.

URLConnection

Абстрактный класс URLConnection является суперклассом всех классов, которые представляют собой канал связи между приложением и URL.

URLDecoder

Утилитарный класс для декодирования HTML-форм.

URLEncoder

Утилитарный класс для кодирования HTML-форм.

URLPermission

Представляет разрешение на доступ к ресурсу или набору ресурсов, определённых заданным URL, а также к набору настраиваемых пользователем методов запроса и заголовков запроса.

URLStreamHandler

Абстрактный класс URLStreamHandler является общим суперклассом для всех обработчиков протоколов потоков.

Перечисление Описание
Authenticator.RequestorType

Тип сущности, запрашивающей аутентификацию.

Proxy.Type

Представляет тип прокси.

StandardProtocolFamily

Определяет стандартные семейства протоколов связи.

Исключение Описание
BindException

Указывает, что произошла ошибка при попытке привязать сокет к локальному адресу и порту.

ConnectException

Указывает, что произошла ошибка при попытке подключить сокет к удалённому адресу и порту.

HttpRetryException

Выбрасывается для обозначения того, что HTTP-запрос необходимо повторить, но автоматическое повторение невозможно из-за включённого потокового режима.

MalformedURLException

Выбрасывается для обозначения возникновения некорректного URL.

NoRouteToHostException

Указывает, что произошла ошибка при попытке подключения сокета к удалённому адресу и порту.

PortUnreachableException

Указывает, что получено сообщение ICMP Port Unreachable для подключённой датаграммы.

ProtocolException

Выбрасывается для обозначения ошибки в базовом протоколе, например, ошибки TCP.

SocketException

Выбрасывается для обозначения ошибки при создании или доступе к Socket.

SocketTimeoutException

Указывает, что произошёл таймаут при чтении из сокета или при приёме.

UnknownHostException

Выбрасывается для обозначения того, что IP-адрес хоста не был определён.

UnknownServiceException

Выбрасывается для обозначения возникновения неизвестной ошибки сервиса.

URISyntaxException

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

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/package-summary.html

Spec-Zone .ru
спецификации, руководства, описания, API