Пакет 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 HTTP Client API.
Рекомендуется использовать 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 | Представляет каналы для хранения ресурсов в ResponseCache. |
| CacheResponse | Представляет каналы для извлечения ресурсов из ResponseCache. |
| 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 | Этот класс представляет адрес Интернет-протокола версии 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 представляет собой универсальный локатор ресурса, указатель на «ресурс» в Всемирной паутине. |
| URLClassLoader | Этот загрузчик классов используется для загрузки классов и ресурсов из пути поиска URL, указывающих как на JAR-файлы, так и на каталоги. |
| URLConnection | Абстрактный класс URLConnection является суперклассом всех классов, представляющих канал связи между приложением и URL. |
| URLDecoder | Утилитный класс для декодирования HTML-форм. |
| URLEncoder | Утилитный класс для кодирования HTML-форм. |
| URLPermission | Представляет разрешение на доступ к ресурсу или набору ресурсов, определённых данным URL, и для заданного набора методов запроса и заголовков запроса, настраиваемых пользователем. |
| URLStreamHandler | Абстрактный класс URLStreamHandler является общим суперклассом для всех обработчиков протоколов потоков. |
| URLStreamHandlerFactory | Этот интерфейс определяет фабрику для URL обработчиков протоколов потоков. |
© 1993, 2023, 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/21/docs/api/java.base/java/net/package-summary.html