模块  java.base

Package java.net

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

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

  • 低级API ,处理以下抽象:

    • 地址 ,网络标识符,如IP地址。

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

    • 接口 ,描述网络接口。

  • 高级API ,处理以下抽象:

    • URI ,表示通用资源标识符。

    • URL ,代表统一资源定位器。

    • Connections ,表示URL指向的资源的连接。

地址

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

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

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

关于IPv6

并非所有系统都支持IPv6协议,并且虽然Java网络堆栈将尝试检测它并在可用时透明地使用它,但也可以禁用它与系统属性的使用。 在IPv6不可用或明确禁用的情况下,Inet6Address不再是大多数网络操作的有效参数。 虽然像InetAddress.getByName(java.lang.String)这样的方法保证在查找主机名时不返回Inet6Address,但通过传递文字可以创建这样的对象。 在这种情况下,大多数方法在使用Inet6Address调用时都会抛出异常。

套接字

套接字是通过网络在机器之间建立通信链路的手段。 java.net包提供了4种套接字:

使用TCP套接字发送和接收是通过InputStreams和OutputStreams完成的,可以通过Socket.getInputStream()Socket.getOutputStream()方法获得。

接口

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

注意,所有符合要求的实现必须至少支持一个NetworkInterface对象,该对象必须连接到网络,或者是只能与同一台机器上的实体通信的“环回”接口。

高级API

java.net包中的许多类确实提供了更高级别的抽象,并允许轻松访问网络上的资源。 课程是:

  • URI是表示通用资源标识符的类,如RFC 2396中所指定。如名称所示,这只是一个标识符,并不直接提供访问资源的方法。
  • URL是表示统一资源定位符的类,它既是URI的旧概念,也是访问资源的方法。
  • URLConnection是从URL创建的,是用于访问URL指向的资源的通信链接。 此抽象类将大部分工作委托给底层协议处理程序,如http或https。
  • HttpURLConnection是URLConnection的子类,它提供了一些特定于HTTP协议的附加功能。 此API已被更新的HTTP Client API取代。

建议的用法是使用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将尝试实例化指定协议的处理程序; 如果它不存在则会抛出异常。

默认情况下,协议处理程序是从默认位置动态加载的。 但是,可以将其他协议处理程序部署为服务 URLStreamHandlerProvider类型的服务提供商位于运行时,如URL constructor中所述。

附加规格

从以下版本开始:
1.0