Spec-Zone.ru › OpenJDK 17

Пакет java.net

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

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

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

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

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

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

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

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

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

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

Адреса

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

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

  • Inet4Address для адресов IPv4.
  • Inet6Address для адресов IPv6.

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

Об IPv6

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

Сокеты

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

  • Socket — это API клиента TCP и обычно используется для подключения к удалённому хосту.
  • ServerSocket — это API сервера TCP и обычно принимает подключения от клиентских сокетов.
  • DatagramSocket — это API конечной точки UDP и используется для отправки и приёма пакетов данных.
  • MulticastSocket — это подкласс DatagramSocket, используемый при работе с группами многоадресной рассылки.

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

Интерфейсы

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

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

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

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

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

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

Вот пример:

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

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

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

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

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

  • Сетевые системные свойства
Since:
1.0
java.net.http
java.base
Модуль Пакет Описание
java.net.http
API клиента HTTP и WebSocket
java.net.spi
Классы поставщиков сервисов для пакета java.net.
Класс Описание
Authenticator
Класс Authenticator представляет собой объект, который знает, как получить аутентификацию для сетевого подключения.
Authenticator.RequestorType
Тип сущности, запрашивающей аутентификацию.
BindException
Сигнализирует об ошибке при попытке привязать сокет к локальному адресу и порту.
CacheRequest
Представляет каналы для хранения ресурсов в кэше ответов.
CacheResponse
Представляет каналы для извлечения ресурсов из кэша ответов.
ConnectException
Сигнализирует об ошибке при попытке подключить сокет к удаленному адресу и порту.
ContentHandler
Абстрактный класс ContentHandler является суперклассом для всех классов, которые считывают Object из URLConnection.
ContentHandlerFactory
Этот интерфейс определяет фабрику для обработчиков содержимого.
CookieHandler
Объект CookieHandler предоставляет механизм обратного вызова для подключения реализации политики управления состоянием HTTP в обработчик протокола HTTP.
CookieManager
CookieManager предоставляет конкретную реализацию CookieHandler, которая отделяет хранение cookie от политики, определяющей принятие и отказ от cookie.
CookiePolicy
Реализации CookiePolicy определяют, какие cookie должны быть приняты, а какие — отклонены.
CookieStore
Объект CookieStore представляет собой хранилище для cookie.
DatagramPacket
Этот класс представляет собой пакет данных.
DatagramSocket
Этот класс представляет собой сокет для отправки и получения пакетов данных.
DatagramSocketImpl
Абстрактный базовый класс реализации сокета для датаграмм и мультивещания.
DatagramSocketImplFactory
Этот интерфейс определяет фабрику для реализаций сокетов датаграмм.
FileNameMap
Простой интерфейс, который предоставляет механизм для сопоставления имени файла с строкой типа MIME.
HttpCookie
Объект HttpCookie представляет собой HTTP cookie, который переносит информацию о состоянии между сервером и пользовательским агентом.
HttpRetryException
Бросается для указания на необходимость повторной попытки HTTP-запроса, но автоматическая повторная попытка недоступна из-за включения режима потоковой передачи.
HttpURLConnection
URLConnection с поддержкой функций, специфичных для HTTP.
IDN
Предоставляет методы для преобразования интернационализированных доменных имен (IDN) между обычным представлением Unicode и представлением ASCII Compatible Encoding (ACE).
Inet4Address
Этот класс представляет собой адрес Интернет-протокола версии 4 (IPv4).
Inet6Address
Этот класс представляет собой адрес Интернет-протокола версии 6 (IPv6).
InetAddress
Этот класс представляет собой адрес Интернет-протокола (IP).
InetSocketAddress
Этот класс реализует адрес IP-сокета (IP-адрес + номер порта). Также может быть парой (имя хоста + номер порта), в этом случае будет произведена попытка разрешения имени хоста.
InterfaceAddress
Этот класс представляет собой адрес сетевого интерфейса.
JarURLConnection
URLConnection для файла Java ARchive (JAR) или записи в файле JAR.
MalformedURLException
Бросается для указания на возникновение некорректного URL.
MulticastSocket
MulticastSocket — это сокет датаграмм, удобный для отправки и приема IP-пакетов мультивещания.
NetPermission
Этот класс предназначен для различных сетевых разрешений.
NetworkInterface
Этот класс представляет сетевой интерфейс, состоящий из имени и списка IP-адресов, назначенных этому интерфейсу.
NoRouteToHostException
Сигнализирует об ошибке при попытке подключить сокет к удаленному адресу и порту.
PasswordAuthentication
Класс PasswordAuthentication — это контейнер данных, используемый классом Authenticator.
PortUnreachableException
Сигнализирует о получении сообщения ICMP Port Unreachable для подключенного сокета датаграмм.
ProtocolException
Бросается для указания на ошибку в базовом протоколе, например, ошибку TCP.
ProtocolFamily
Представляет собой семейство коммуникационных протоколов.
Proxy
Этот класс представляет настройку прокси, обычно тип (http, socks) и адрес сокета.
Proxy.Type
Представляет тип прокси.
ProxySelector
Выбирает сервер прокси для использования при подключении к сетевому ресурсу, указанному в URL.
ResponseCache
Представляет реализации кэшей URLConnection.
SecureCacheResponse
Представляет собой ответ кэша, изначально полученный с помощью защищенных средств, таких как TLS.
ServerSocket
Этот класс реализует серверные сокеты.
Socket
Этот класс реализует клиентские сокеты (также называемые просто "сокетами").
SocketAddress
Этот класс представляет адрес сокета без привязки к протоколу.
SocketException
Бросается для указания на ошибку при создании или доступе к Socket.
SocketImpl
Абстрактный класс SocketImpl — общий суперкласс для всех классов, которые фактически реализуют сокеты.
SocketImplFactory
Этот интерфейс определяет фабрику для реализаций сокетов.
SocketOption<T>
Параметр сокета, связанный с сокетом.
SocketOptions
Интерфейс методов для получения/установки параметров сокета.
SocketPermission
Этот класс представляет доступ к сети через сокеты.
SocketTimeoutException
Сигнализирует о том, что произошла ошибка по таймауту при чтении или приеме сокета.
StandardProtocolFamily
Определяет стандартные семейства коммуникационных протоколов.
StandardSocketOptions
Определяет стандартные параметры сокета.
UnixDomainSocketAddress
Адрес сокета Unix-домена.
UnknownHostException
Бросается для указания на невозможность определения IP-адреса хоста.
UnknownServiceException
Выбрасывается для указания того, что произошла неизвестная ошибка службы.
URI
Представляет ссылку на универсальный идентификатор ресурса (URI).
URISyntaxException
Проверяемая ошибка, выбрасываемая для указания того, что строку нельзя было разобрать как ссылку URI.
URL
Класс URL представляет собой универсальный указатель ресурса (URL) — указатель на «ресурс» в Всемирной паутине.
URLClassLoader
Этот загрузчик классов используется для загрузки классов и ресурсов из пути поиска URL-адресов, ссылающихся как на JAR-файлы, так и на каталоги.
URLConnection
Абстрактный класс URLConnection является суперклассом всех классов, которые представляют собой канал связи между приложением и URL-адресом.
URLDecoder
Утилитарный класс для декодирования HTML-форм.
URLEncoder
Утилитарный класс для кодирования HTML-форм.
URLPermission
Представляет разрешение на доступ к ресурсу или набору ресурсов, определяемых заданным URL-адресом, а также для заданного набора устанавливаемых пользователем методов запроса и заголовков запроса.
URLStreamHandler
Абстрактный класс URLStreamHandler является общим суперклассом для всех обработчиков протоколов потоков.
URLStreamHandlerFactory
Этот интерфейс определяет фабрику для URL обработчиков протоколов потоков.

© 1993, 2021, 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/17/docs/api/java.base/java/net/package-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API