Пакет 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
| Класс | Описание |
|---|---|
| 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