Module  java.base

Package java.net

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

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

  • 低级API ,涉及以下抽象:

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

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

    • 接口 ,描述网络接口。

  • 高级API ,涉及以下抽象:

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

    • 网址 ,代表普遍资源定位器。

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

地址

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

InetAddress类是代表IP(互联网协议)地址的抽象。 它有两个子类:

但是,在大多数情况下,不需要直接处理子类,因为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客户端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的主要区别,因此不需要访问协议处理程序。 因此,尽管可以使用任何类型的协议方案(例如, myproto://myhost.mydomain/resource/ )创建URI,但类似的URL将尝试实例化指定协议的处理程序; 如果不存在,将抛出异常。

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

附加规格

从以下版本开始:
1.0