Package java.net
java.net包可以大致分为两部分:
低级API ,处理以下抽象:
地址 ,网络标识符,如IP地址。
套接字 ,是基本的双向数据通信机制。
接口 ,描述网络接口。
高级API ,处理以下抽象:
URI ,表示通用资源标识符。
URL ,代表统一资源定位器。
Connections ,表示URL指向的资源的连接。
地址
地址在整个java.net API中用作主机标识符或套接字端点标识符。
InetAddress
类是表示IP(Internet协议)地址的抽象。 它有两个子类:
-
Inet4Address
用于IPv4地址。 -
Inet6Address
用于IPv6地址。
但是,在大多数情况下,不需要直接处理子类,因为InetAddress抽象应该涵盖大部分所需的功能。
关于IPv6
并非所有系统都支持IPv6协议,并且虽然Java网络堆栈将尝试检测它并在可用时透明地使用它,但也可以禁用它与系统属性的使用。 在IPv6不可用或明确禁用的情况下,Inet6Address不再是大多数网络操作的有效参数。 虽然像InetAddress.getByName(java.lang.String)
这样的方法保证在查找主机名时不返回Inet6Address,但通过传递文字可以创建这样的对象。 在这种情况下,大多数方法在使用Inet6Address调用时都会抛出异常。
套接字
套接字是通过网络在机器之间建立通信链路的手段。 java.net包提供了4种套接字:
-
Socket
是TCP客户端API,通常用于connect到远程主机。 -
ServerSocket
是TCP服务器API,通常来自客户端套接字的accept连接。 -
DatagramSocket
是UDP端点API,用于send和receive datagram packets 。 -
MulticastSocket
是处理多播组时使用的DatagramSocket
的子类。
使用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
-
接口摘要 接口 描述 ContentHandlerFactory 此接口为内容处理程序定义工厂。CookiePolicy CookiePolicy实现决定应该接受哪些cookie以及哪些cookie应该被拒绝。CookieStore CookieStore对象表示cookie的存储。DatagramSocketImplFactory 此接口定义数据报套接字实现的工厂。FileNameMap 一个简单的接口,提供了一种在文件名和MIME类型字符串之间进行映射的机制。ProtocolFamily 代表一系列通信协议。SocketImplFactory 此接口为套接字实现定义工厂。SocketOption<T> 与套接字关联的套接字选项。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,它在服务器和用户代理之间携带状态信息。HttpURLConnection URLConnection,支持HTTP特定功能。IDN 提供在普通Unicode表示和ASCII兼容编码(ACE)表示之间转换国际化域名(IDN)的方法。Inet4Address 此类表示Internet协议版本4(IPv4)地址。Inet6Address 此类表示Internet协议版本6(IPv6)地址。InetAddress 此类表示Internet协议(IP)地址。InetSocketAddress 此类实现IP套接字地址(IP地址+端口号)它也可以是一对(主机名+端口号),在这种情况下,将尝试解析主机名。InterfaceAddress 此类表示网络接口地址。JarURLConnection URL连接到Java ARchive(JAR)文件或JAR文件中的条目。MulticastSocket 多播数据报套接字类对于发送和接收IP多播数据包很有用。NetPermission 此类用于各种网络权限。NetworkInterface 此类表示由名称和分配给此接口的IP地址列表组成的网络接口。PasswordAuthentication PasswordAuthentication类是Authenticator使用的数据持有者。Proxy 此类表示代理设置,通常是类型(http,socks)和套接字地址。ProxySelector 连接到URL引用的网络资源时,选择要使用的代理服务器(如果有)。ResponseCache 表示URLConnection缓存的实现。SecureCacheResponse 表示最初通过安全方式(如TLS)检索的缓存响应。ServerSocket 该类实现服务器套接字。Socket 该类实现客户端套接字(也称为“套接字”)。SocketAddress 此类表示没有协议附件的套接字地址。SocketImpl 抽象类SocketImpl
是实际实现套接字的所有类的公共超类。SocketPermission 此类表示通过套接字访问网络。StandardSocketOptions 定义 标准套接字选项。URI 表示统一资源标识符(URI)引用。URL 类URL
表示统一资源定位符,指向万维网上的“资源”的指针。URLClassLoader 此类加载器用于从引用JAR文件和目录的URL的搜索路径加载类和资源。URLConnection 抽象类URLConnection
是表示应用程序和URL之间的通信链接的所有类的超类。URLDecoder 用于HTML表单解码的实用程序类。URLEncoder HTML表单编码的实用程序类。URLPermission 表示访问由给定URL定义的资源或资源集的权限,以及给定的一组用户可设置的请求方法和请求标头的权限。URLStreamHandler 抽象类URLStreamHandler
是所有流协议处理程序的公共超类。 -
枚举摘要 Enum 描述 Authenticator.RequestorType 请求身份验证的实体的类型。Proxy.Type 表示代理类型。StandardProtocolFamily 定义通信协议的标准系列。 -
异常摘要 异常 描述 BindException 表示尝试将套接字绑定到本地地址和端口时发生错误。ConnectException 表示尝试将套接字连接到远程地址和端口时发生错误。HttpRetryException 抛出以指示需要重试HTTP请求但由于启用了流模式而无法自动重试。MalformedURLException 抛出此异常表示发生了格式错误的URL。NoRouteToHostException 表示尝试将套接字连接到远程地址和端口时发生错误。PortUnreachableException 表示已在连接的数据报上收到ICMP Port Unreachable消息。ProtocolException 抛出以指示底层协议中存在错误,例如TCP错误。SocketException 抛出表示创建或访问Socket时出错。SocketTimeoutException 表示在套接字读取或接受时发生超时的信号。UnknownHostException 抛出表示无法确定主机的IP地址。UnknownServiceException 抛出此异常表示发生了未知服务异常。URISyntaxException 抛出检查的异常以指示无法将字符串解析为URI引用。