java.net

更新时间:2023-10-17 21:46

并非所有系统都支持 IPv6 协议,而当 Java 网络连接堆栈尝试检测它并在可用时透明地使用它时,还可以利用系统属性禁用它。在 IPv6 不可用或被显式禁用的情况下,Inet6Address 对大多数网络连接操作都不再是有效参数。虽然可以保证在查找主机名时 java.net.InetAddress.getByName 之类的方法不返回 Inet6Address,但仍然可能通过传递字面值来创建此类对象。在此情况下,大多数方法在使用 Inet6Address 调用时都将抛出异常

简介

javanet是Java技术相关的社区网站,它还提供了基于网络的一个Java项目的源代码库。

接口摘要

ContentHandlerFactory ;此接口定义内容处理程序的工厂。

CookiePolicy CookiePolicy 实现决定应该接受哪个 cookie 以及应该拒绝哪个 cookie。

CookieStore ;表示 cookie 存储区的 CookieStore 对象。

DatagramSocketImplFactory ;此接口定义用于数据报套接字实现的工厂。

FileNameMap ;提供在文件名和 MIME 类型字符串之间进行映射的机制的简单接口。

SocketImplFactory ;此接口定义用于套接字实现的工厂。

SocketOptions ;获取/设置套接字选项的方法的接口。

URLStreamHandlerFactory ;该接口为 URL 流协议处理程序定义一个工厂。

类摘要

Authenticator Authenticator 类表示懂得如何获得网络连接验证的对象。

CacheRequest ;表示在 ResponseCache 中存储资源的通道。

CacheResponse ;表示从 ResponseCache 获取资源的通道。

ContentHandler抽象类ContentHandler 是从 URLConnection 读取 Object 的所有类的超类

CookieHandler CookieHandler 对象提供一种回调机制以将 HTTP 状态管理策略实现挂钩到 HTTP 协议处理程序。

CookieManager CookieManager 提供 CookieHandler 的具体实现,它将 cookie(辨别用户身份的本地终端数据) 的存储区与围绕接受和拒绝 cookie 的策略分离开来。

DatagramPacket ;此类表示数据报包。

DatagramSocket ;此类表示用来发送和接收数据报包的套接字

DatagramSocketImpl ;数据报和多播套接字实现的抽象基类。

HttpCookie HttpCookie 对象表示一个 http cookie,该 cookie 带有服务器和用户代理之间的状态信息。

HttpURLConnection;支持 HTTP 特定功能的 URLConnection。

IDN ;提供在普通 Unicode 表示形式和 ASCⅡ 兼容性编码 (ACE) 表示形式之间进行国际化域名 (IDN) 转换的方法。

Inet4Address ;此类表示 Internet Protocol version 4(IPv4) 地址。

Inet6Address ;此类表示互联网协议第 6 版(IPv6) 地址。

InetAddress ;此类表示互联网协议(IP) 地址。

InetSocketAddress ;此类实现 IP套接字地址(IP 地址 +端口号)。

InterfaceAddress ;此类表示网络接口地址。

JarURLConnection ;连接到 Java ARchive (JAR) 文件或 JAR 文件中条目的 URL Connection。

MulticastSocket多播数据报套接字类用于发送和接收 IP 多播包。

NetPermission ;此类可用于各种网络权限。

NetworkInterface ;此类表示一个由名称和分配给此接口的 IP 地址列表组成的网络接口。

PasswordAuthentication PasswordAuthentication 类是供 Authenticator 使用的数据持有者。

Proxy ;此类表示代理设置,通常为类型(http、socks)和套接字地址。

ProxySelector ;连接到 URL 引用的网络资源时选择要使用的代理服务器(如果有)。

ResponseCache ;表示 URLConnection 缓存的实现。

SecureCacheResponse ;表示最初通过安全方法(如 TLS)获得的缓存响应。

ServerSocket ;此类实现服务器套接字。

Socket ;此类实现客户端套接字(也可以就叫“套接字”)。

SocketAddress ;此类表示不带任何协议附件的 Socket Address。

SocketImpl抽象类SocketImpl 是实际实现套接字的所有类的通用超类

SocketPermission ;此类表示通过套接字对网络的访问。

URI ;表示一个统一资源标识符 (URI) 引用。

URL ;类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针

URLClassLoader ;该类加载器用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。

URLConnection抽象类URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接。

URLDecoder HTML 格式解码的实用工具类。

URLEncoder HTML 格式编码的实用工具类。

URLStreamHandler抽象类URLStreamHandler 是所有流协议处理程序的通用超类。

枚举摘要

Authenticator.RequestorType ;请求验证的实体的类型。

Proxy.Type ;表示代理类型。

异常摘要

BindException ;试图将套接字绑定到本地地址和端口时发生错误的情况下,抛出此异常。

ConnectException ;试图将套接字连接到远程地址和端口时发生错误的情况下,抛出此异常。

HttpRetryException ;抛出此异常指示 HTTP 请求需要重试,但由于启用了流模式而无法自动重试。

MalformedURLException ;抛出这一异常指示出现了错误的 URL。

NoRouteToHostException ;试图将套接字连接到远程地址和端口时发生错误的情况下,抛出此异常。

PortUnreachableException ;在连接的数据报上已接收到 ICMP Port Unreachable 消息时,抛出该异常。

ProtocolException ;抛出此异常指示在底层协议中存在错误,如 TCP 错误。

SocketException ;抛出此异常指示在底层协议中存在错误,如 TCP 错误。

SocketTimeoutException ;如果在读取或接受套接字时发生超时,则抛出此异常。

UnknownHostException ;指示主机IP 地址无法确定而抛出的异常。

UnknownServiceException ;抛出这一异常指示出现了未知服务异常。

URISyntaxException ;抛出经过检查的指示字符串不能解析为 URI 引用的异常。

软件包

为实现网络应用程序提供类。

java.net 包可以大致分为两个部分:

低级 API,用于处理以下抽象:

地址,也就是网络标识符,如 IP 地址。

套接字,也就是基本双向数据通信机制。

接口,用于描述网络接口。

高级 API,用于处理以下抽象:

URI,表示统一资源标识符

URL,表示统一资源定位符

连接,表示到 URL 所指向资源的连接。

地址

在整个 java.net API 中,地址或者用作主机标识符或者用作套接字端点标识符。

InetAddress 类是表示 IP(Internet 协议)地址的抽象,它拥有两个子类:

用于 IPv4 地址的 Inet4Address。

用于 IPv6 地址的 Inet6Address。

但是,在大多数情况下,不必直接处理子类,因为 InetAddress 抽象应该覆盖大多数必需的功能。关于

套接字

套接字是在网络上建立机器之间的通信链接的方法。java.net 包提供 4 种套接字:

Socket 是 TCP客户端API,通常用于将 (java.net.Socket.connect(SocketAddress)) 连接到远程主机。

ServerSocket 是 TCP 服务器 API,通常接受 (java.net.ServerSocket.accept) 源于客户端套接字的连接。

DatagramSocket 是 UDP 端点 API,用于发送和接收 java.net.DatagramPackets。

MulticastSocket 是 DatagramSocket 的子类,在处理多播组时使用。

使用 TCP套接字的发送和接收操作需要借助 InputStream 和 OutputStream 来完成,这两者是通过 java.net.Socket.getInputStream 和 java.net.Socket.getOutputStream 方法获取的。

接口

NetworkInterface 类提供 API 以浏览和查询本地机器的所有网络接口(例如,以太网连接或 PPP 端点)。只有通过该类才可以检查是否将所有本地接口都配置为支持 IPv6。

高级 API

java.net 包中的许多类可以提供更加高级的抽象,允许方便地访问网络上的资源。这些类为:

URI 是表示在 RFC 2396 中指定的统一资料标识符的类。顾名思义,它只是一个标识符,不直接提供访问资源的方法。

URL 是表示统一资源定位符的类,它既是 URI 的旧式概念又是访问资源的方法。

URLConnection 是根据 URL 创建的,是用于访问 URL 所指向资源的通信链接。此抽象类将大多数工作委托给底层协议处理程序,如 http 或 ftp。

HttpURLConnection是 URLConnection 的子类,提供一些特定于 HTTP 协议的附加功能。

建议的用法是使用 URI 指定资源,然后在访问资源时将其转换为 URL。从该 URL 可以获取 URLConnection 以进行良好控制,也可以直接获取 InputStream。

下面是一个示例:

URL url = uri.toURL;

InputStream in = url.openStream;

协议处理程序

如上所述,URL 和 URLConnection 都依赖于协议处理程序,所以协议处理程序必须存在;否则将抛出异常。此为与 URI 的主要不同点,URI 仅标识资源,所以不必访问协议处理程序。因此,尽管可能利用任何种类的协议方案(例如,myproto://myhost.mydomain/resource/)创建 URI,但类似的 URL 仍将试图实例化指定协议的处理程序;如果指定协议的处理程序不存在,则抛出异常。

默认情况下,协议处理程序从默认位置动态加载。但是,通过设置 java.protocol.handler.pkgs 系统属性也可能增加搜索路径。例如,如果将其设置为 myapp.protocols,则 URL 代码将首先尝试(对于 http 而言)加载 myapp.protocols.http.Handler,然后,如果失败,则尝试从默认位置加载 http.Handler。

注意,处理程序类必须为抽象类URLStreamHandler 的子类。

从以下版本开始:

JDK1.0

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}