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(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, который должен быть либо подключён к сети, либо являться интерфейсом «loopback», способным взаимодействовать только с объектами на том же компьютере.
Высокоуровневый 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://www.example.com/");
URL url = uri.toURL();
InputStream in = url.openStream();
Обработчики протоколов
Как упоминалось выше, URL и URLConnection используют обработчики протоколов, которые должны быть доступны; в противном случае будет выброшено исключение. В этом заключается главное отличие от URI, которые только идентифицируют ресурсы и поэтому не требуют доступа к обработчику протокола. Таким образом, хотя URI можно создать с любой схемой протокола (например,myproto://myhost.mydomain/resource/), аналогичный URL попытается создать обработчик для указанного протокола; если такого обработчика нет, будет выброшено исключение. По умолчанию обработчики протоколов динамически загружаются из расположения по умолчанию. Однако дополнительные обработчики протоколов можно развернуть как services. Поставщики служб типа URLStreamHandlerProvider обнаруживаются во время выполнения, как указано в конструкторе URL.
Дополнительная спецификация
- Начиная с:
- 1.0
| Класс | Описание |
|---|---|
| Authenticator | Класс Authenticator представляет объект, который умеет получать данные для аутентификации сетевого соединения. |
| Authenticator.RequestorType | Тип сущности, запрашивающей аутентификацию. |
| BindException | Сигнализирует об ошибке при попытке привязать сокет к локальному адресу и порту. |
| CacheRequest | Представляет каналы для сохранения ресурсов в ResponseCache. |
| CacheResponse | Представляет каналы для получения ресурсов из ResponseCache. |
| ConnectException | Сигнализирует об ошибке при попытке подключить сокет к удалённому адресу и порту. |
| ContentHandler | Абстрактный класс ContentHandler является суперклассом всех классов, считывающих Object из URLConnection. |
| ContentHandlerFactory | Этот интерфейс определяет фабрику обработчиков содержимого. |
| CookieHandler | Объект CookieHandler предоставляет механизм обратного вызова для подключения реализации политики управления состоянием HTTP к обработчику протокола HTTP. |
| CookieManager | CookieManager предоставляет конкретную реализацию CookieHandler, отделяющую хранение файлов cookie от политики их принятия и отклонения. |
| CookiePolicy | Реализации CookiePolicy определяют, какие файлы cookie следует принимать, а какие отклонять. |
| CookieStore | Объект CookieStore представляет хранилище файлов cookie. |
| DatagramPacket | Этот класс представляет пакет датаграммы. |
| DatagramSocket | Этот класс представляет сокет для отправки и получения пакетов датаграмм. |
| DatagramSocketImpl | Базовый абстрактный класс реализации датаграммных и многоадресных сокетов. |
| DatagramSocketImplFactory | Этот интерфейс определяет фабрику реализаций датаграммных сокетов. |
| FileNameMap | Простой интерфейс, предоставляющий механизм сопоставления имени файла со строкой типа MIME. |
| HttpCookie | Объект HttpCookie представляет cookie HTTP, которое передаёт информацию о состоянии между сервером и пользовательским агентом. |
| HttpRetryException | Выбрасывается, если HTTP-запрос необходимо повторить, но его нельзя повторить автоматически из-за включённого потокового режима. |
| 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. |
| MalformedURLException | Выбрасывается, если обнаружен некорректный URL. |
| MulticastSocket | MulticastSocket — это датаграммный сокет, удобный для отправки и получения IP-датаграмм многоадресной рассылки. |
| NetPermission | Устарело, для удаления: этот элемент API может быть удалён в будущей версии. Это разрешение нельзя использовать для управления доступом к ресурсам, поскольку Security Manager больше не поддерживается. |
| NetworkInterface | Этот класс представляет сетевой интерфейс. |
| 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 | Выбрасывается при ошибке создания сокета или доступа к нему. |
| SocketImpl | Абстрактный класс SocketImpl является общим суперклассом всех классов, непосредственно реализующих сокеты. |
| SocketImplFactory | Этот интерфейс определяет фабрику реализаций сокетов. |
| SocketOption<T> | Параметр сокета, связанный с сокетом. |
| SocketOptions | Интерфейс методов для получения и задания параметров сокета. |
| SocketPermission | Этот класс представляет доступ к сети через сокеты. |
| SocketTimeoutException | Сигнализирует о превышении времени ожидания при чтении из сокета или вызове accept. |
| StandardProtocolFamily | Определяет стандартные семейства протоколов связи. |
| StandardSocketOptions | Определяет стандартные параметры сокетов. |
| UnixDomainSocketAddress | Адрес доменного сокета Unix. |
| UnknownHostException | Выбрасывается, если не удалось определить IP-адрес узла. |
| UnknownServiceException | Выбрасывается при возникновении исключения, связанного с неизвестной службой. |
| URI | Представляет ссылку на универсальный идентификатор ресурса (URI). |
| URISyntaxException | Проверяемое исключение, выбрасываемое, если строку не удалось разобрать как ссылку URI. |
| URL | Класс URL представляет универсальный указатель ресурса — указатель на «ресурс» во Всемирной паутине. |
| URLClassLoader | Этот загрузчик классов используется для загрузки классов и ресурсов из пути поиска URL, указывающих как на файлы JAR, так и на каталоги. |
| URLConnection | Абстрактный класс URLConnection является суперклассом всех классов, представляющих канал связи между приложением и URL. |
| URLDecoder | Вспомогательный класс для декодирования данных HTML-форм. |
| URLEncoder | Вспомогательный класс для кодирования данных HTML-форм. |
| URLPermission | Устарело, для удаления: этот элемент API может быть удалён в будущей версии. Это разрешение нельзя использовать для управления доступом к ресурсам, поскольку Security Manager больше не поддерживается. |
| URLStreamHandler | Абстрактный класс URLStreamHandler является общим суперклассом всех обработчиков потоковых протоколов. |
| URLStreamHandlerFactory | Этот интерфейс определяет фабрику обработчиков потоковых протоколов URL. |
© 1993, 2025, 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/25/docs/api/java.base/java/net/package-summary.html