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 协议)地址的抽象。它拥有两个子类:

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

关于 IPv6

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

套接字

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

使用 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 的子类。

从以下版本开始:
JDK1.0