Пакет java.net
Предоставляет классы для реализации сетевых приложений.
Пакет java.net можно примерно разделить на две части:
-
API низкого уровня, который работает со следующими абстракциями:
Адреса, которые являются сетевыми идентификаторами, например, IP-адреса.
Сокеты, которые являются основными двусторонними механизмами обмена данными.
Интерфейсы, которые описывают сетевые интерфейсы.
-
API высокого уровня, который работает со следующими абстракциями:
URI, которые представляют универсальные идентификаторы ресурсов.
URL, которые представляют универсальные указатели ресурсов.
Подключения, которые представляют подключения к ресурсу, на который указывает URL.
Адреса
Адреса используются во всех API java.net как идентификаторы хостов или идентификаторы конечных точек сокетов.
Класс InetAddress является абстракцией, представляющей IP-адрес (адрес интернет-протокола). У него есть два подкласса:
-
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— это класс, представляющий универсальный идентификатор ресурса, как указано в 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://java.sun.com/");
URL url = uri.toURL();
InputStream in = url.openStream(); Обработчики протоколов
Как уже упоминалось, URL и URLConnection зависят от обработчиков протоколов, которые должны быть присутствовать, иначе будет выброшено исключение. Это основное отличие от URI, которые только идентифицируют ресурсы и, следовательно, не нуждаются в доступе к обработчику протокола. Таким образом, хотя можно создать URI с любой схемой протокола (например,myproto://myhost.mydomain/resource/), аналогичный URL попытается инициализировать обработчик для указанного протокола; если он не существует, будет выброшено исключение. По умолчанию обработчики протоколов загружаются динамически из стандартного расположения. Тем не менее, можно развернуть дополнительные обработчики протоколов как services. Поставщики услуг типа URLStreamHandlerProvider находятся во время выполнения, как указано в конструкторе URL.
Дополнительные спецификации
- С момента:
- 1.0
| Интерфейс | Описание |
|---|---|
| ContentHandlerFactory | Этот интерфейс определяет фабрику для обработчиков содержимого. |
| CookiePolicy | Реализации CookiePolicy решают, какие куки следует принимать, а какие отклонять. |
| CookieStore | Объект CookieStore представляет хранилище куки. |
| DatagramSocketImplFactory | Этот интерфейс определяет фабрику для реализаций сокетов датаграмм. |
| FileNameMap | Простой интерфейс, который предоставляет механизм сопоставления между именем файла и строкой MIME-типа. |
| ProtocolFamily | Представляет семейство протоколов связи. |
| SocketImplFactory | Этот интерфейс определяет фабрику для реализаций сокетов. |
| SocketOption<T> | Параметр сокета, связанный с сокетом. |
| SocketOptions | Интерфейс методов для получения/установки параметров сокета. |
| URLStreamHandlerFactory | Этот интерфейс определяет фабрику для обработчиков протоколов потоков |
| Класс | Описание |
|---|---|
| Authenticator | Класс Authenticator представляет объект, знающий, как получить аутентификацию для сетевого соединения. |
| CacheRequest | Представляет каналы для хранения ресурсов в кэше ResponseCache. |
| CacheResponse | Представляет каналы для извлечения ресурсов из кэша ResponseCache. |
| ContentHandler | Абстрактный класс |
| CookieHandler | Объект CookieHandler предоставляет механизм обратного вызова для подключения реализации политики управления состоянием HTTP в обработчик протокола HTTP. |
| CookieManager | CookieManager предоставляет конкретную реализацию |
| DatagramPacket | Этот класс представляет пакет датаграмм. |
| DatagramSocket | Этот класс представляет сокет для отправки и получения пакетов датаграмм. |
| DatagramSocketImpl | Базовый абстрактный класс реализации сокетов для датаграмм и мультикаст-сокетов. |
| HttpCookie | Объект HttpCookie представляет HTTP cookie, который переносит информацию о состоянии между сервером и пользовательским агентом. |
| 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. |
| MulticastSocket | Класс мультивещательного сокета полезен для отправки и получения пакетов IP-мультикаста. |
| NetPermission | Этот класс предназначен для различных сетевых разрешений. |
| NetworkInterface | Этот класс представляет сетевой интерфейс, состоящий из имени и списка IP-адресов, назначенных этому интерфейсу. |
| PasswordAuthentication | Класс PasswordAuthentication является контейнером данных, используемым классом Authenticator. |
| Proxy | Этот класс представляет настройку прокси, обычно тип (http, socks) и адрес сокета. |
| ProxySelector | Выбирает прокси-сервер для использования (если таковой имеется) при подключении к сетевому ресурсу, на который ссылается URL. |
| ResponseCache | Представляет реализации кэшей URLConnection. |
| SecureCacheResponse | Представляет ответ кэша, изначально полученный с помощью безопасных средств, таких как TLS. |
| ServerSocket | Этот класс реализует серверные сокеты. |
| Socket | Этот класс реализует клиентские сокеты (также называемые просто "сокетами"). |
| SocketAddress | Этот класс представляет адрес сокета без привязки к протоколу. |
| SocketImpl | Абстрактный класс |
| SocketPermission | Этот класс представляет доступ к сети через сокеты. |
| StandardSocketOptions | Определяет стандартные опции сокета. |
| URI | Представляет ссылку на универсальный идентификатор ресурса (URI). |
| URL | Класс |
| URLClassLoader | Этот загрузчик классов используется для загрузки классов и ресурсов из пути поиска URL, которые ссылаются как на JAR-файлы, так и на каталоги. |
| URLConnection | Абстрактный класс |
| URLDecoder | Утилитарный класс для декодирования HTML-форм. |
| URLEncoder | Утилитарный класс для кодирования HTML-форм. |
| URLPermission | Представляет разрешение на доступ к ресурсу или набору ресурсов, определённых заданным URL, а также к набору настраиваемых пользователем методов запроса и заголовков запроса. |
| URLStreamHandler | Абстрактный класс |
| Перечисление | Описание |
|---|---|
| Authenticator.RequestorType | Тип сущности, запрашивающей аутентификацию. |
| Proxy.Type | Представляет тип прокси. |
| StandardProtocolFamily | Определяет стандартные семейства протоколов связи. |
| Исключение | Описание |
|---|---|
| BindException | Указывает, что произошла ошибка при попытке привязать сокет к локальному адресу и порту. |
| ConnectException | Указывает, что произошла ошибка при попытке подключить сокет к удалённому адресу и порту. |
| HttpRetryException | Выбрасывается для обозначения того, что HTTP-запрос необходимо повторить, но автоматическое повторение невозможно из-за включённого потокового режима. |
| MalformedURLException | Выбрасывается для обозначения возникновения некорректного URL. |
| NoRouteToHostException | Указывает, что произошла ошибка при попытке подключения сокета к удалённому адресу и порту. |
| PortUnreachableException | Указывает, что получено сообщение ICMP Port Unreachable для подключённой датаграммы. |
| ProtocolException | Выбрасывается для обозначения ошибки в базовом протоколе, например, ошибки TCP. |
| SocketException | Выбрасывается для обозначения ошибки при создании или доступе к Socket. |
| SocketTimeoutException | Указывает, что произошёл таймаут при чтении из сокета или при приёме. |
| UnknownHostException | Выбрасывается для обозначения того, что IP-адрес хоста не был определён. |
| UnknownServiceException | Выбрасывается для обозначения возникновения неизвестной ошибки сервиса. |
| URISyntaxException | Исключение, которое проверяется и выбрасывается для указания того, что строка не может быть обработана как ссылка URI. |
© 1993, 2020, 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/11/docs/api/java.base/java/net/package-summary.html