软件包 java.net
为实现网络应用程序提供类。
请参见:
描述
接口摘要
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 表示形式和 ASCII 兼容性编码 (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 的描述
为实现网络应用程序提供类。
java.net 包可以大致分为两个部分:
低级 API ,用于处理以下抽象: 地址 ,也就是网络标识符,如 IP 地址。 套接字 ,也就是基本双向数据通信机制。 接口 ,用于描述网络接口。 高级 API ,用于处理以下抽象: URI ,表示统一资源标识符。 URL ,表示统一资源定位符。 连接 ,表示到 URL 所指向资源的连接。地址
在整个 java.net API 中,地址或者用作主机标识符或者用作套接字端点标识符。
InetAddress 类是表示 IP(Internet 协议)地址的抽象。它拥有两个子类:
用于 IPv4 地址的 Inet4Address。 用于 IPv6 地址的 Inet6Address。但是,在大多数情况下,不必直接处理子类,因为 InetAddress 抽象应该覆盖大多数必需的功能。
关于 IPv6
并非所有系统都支持 IPv6 协议,而当 Java 网络连接堆栈尝试检测它并在可用时透明地使用它时,还可以利用系统属性禁用它。在 IPv6 不可用或被显式禁用的情况下,Inet6Address 对大多数网络连接操作都不再是有效参数。虽然可以保证在查找主机名时 java.net.InetAddress.getByName 之类的方法不返回Inet6Address,但仍然可能通过传递字面值来创建此类对象。在此情况下,大多数方法在使用Inet6Address 调用时都将抛出异常。
套接字
套接字是在网络上建立机器之间的通信链接的方法。java.net 包提供 4 种套接字:
Socket 是 TCP 客户端 API,通常用于连接远程主机。 ServerSocket 是 TCP 服务器 API,通常接受源于客户端套接字的连接。 DatagramSocket 是 UDP 端点 API,用于发送和接收数据包 MulticastSocket 是 DatagramSocket 的子类,在处理多播组时使用。使用 TCP 套接字的发送和接收操作需要借助 InputStream 和 OutputStream 来完成,这两者是通过 Socket.getInputStream()和 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。
下面是一个示例:
URI uri = new URI("http://java.sun.com/");
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 的子类。