Пакет java.net
Предоставляет классы для реализации сетевых приложений.
См.: Описание
| Интерфейс | Описание |
|---|---|
| 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, который переносит информацию о состоянии между сервером и клиентом. |
| HttpURLConnection | URLConnection с поддержкой функций, специфичных для HTTP. |
| IDN | Предоставляет методы для преобразования интернационализированных доменных имен (IDN) между обычным представлением Unicode и представлением ASCII Compatible Encoding (ACE). |
| Inet4Address | Этот класс представляет собой адрес интернет-протокола версии 4 (IPv4). |
| Inet6Address | Этот класс представляет собой адрес интернет-протокола версии 6 (IPv6). |
| InetAddress | Этот класс представляет собой адрес интернет-протокола (IP). |
| InetSocketAddress | Этот класс реализует IP-адрес сокета (IP-адрес + номер порта). Он также может быть парой (имя хоста + номер порта), в этом случае будет предпринята попытка разрешить имя хоста. |
| InterfaceAddress | Этот класс представляет собой адрес сетевого интерфейса. |
| JarURLConnection | URL Connection к файлу 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 «Недоступный порт» по подключённой дейтаграмме. |
| ProtocolException | Выбрасывается для указания ошибки в базовом протоколе, например, TCP-ошибки. |
| SocketException | Выбрасывается для указания ошибки создания или доступа к Socket. |
| SocketTimeoutException | Указывает, что произошел таймаут при чтении или приёме сокета. |
| UnknownHostException | Выбрасывается для указания того, что IP-адрес хоста не может быть определён. |
| UnknownServiceException | Выбрасывается для указания ошибки неизвестной службы. |
| URISyntaxException | Исключение, проверяемое при компиляции, выбрасываемое для указания того, что строка не может быть обработана как ссылка URI. |
Описание пакета 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.
Рекомендуется использовать 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 попытается инициализировать обработчик для указанного протокола; если он не существует, будет сгенерировано исключение. По умолчанию обработчики протоколов загружаются динамически из стандартного расположения. Однако можно добавить в путь поиска, установив системную переменную java.protocol.handler.pkgs. Например, если она установлена в значение myapp.protocols, то код URL попытается в случае с http сначала загрузить myapp.protocols.http.Handler, а затем, если это не удастся, http.Handler из стандартного расположения.
Обратите внимание, что класс обработчика должен быть подклассом абстрактного класса URLStreamHandler.
Дополнительные спецификации
- С момента:
- JDK1.0
© 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.