Пакет 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 объект, который должен быть подключен к сети или быть "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.
Дополнительная спецификация
- 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-совместимого кодирования (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 | Этот класс предназначен для различных сетевых разрешений. |
| 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 | Выбрасывается для указания на ошибку при создании или доступе к 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, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/net/package-summary.html