Пакет 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 Client.
Рекомендуется использовать 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 (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 | Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Это разрешение нельзя использовать для управления доступом к ресурсам, поскольку Security Manager больше не поддерживается. |
| 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.