Most visited

Recently visited

Added in API level 1

java.net

Provides the classes for implementing networking applications.

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

Addresses

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

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

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

About IPv6

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

Sockets

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

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

Interfaces

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

High level API

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

建议的用法是使用URI来标识资源,然后在需要访问资源时将其转换为URL 从该URL中,您可以获得URLConnection进行精细控制,或者直接获取InputStream。

这里是一个例子:

URI uri = new URI("http://java.sun.com/");
URL url = uri.toURL();
InputStream in = url.openStream();

Protocol Handlers

As mentioned, URL and URLConnection rely on protocol handlers which must be present, otherwise an Exception is thrown. This is the major difference with URIs which only identify resources, and therefore don't need to have access to the protocol handler. So, while it is possible to create an URI with any kind of protocol scheme (e.g. myproto://myhost.mydomain/resource/), a similar URL will try to instantiate the handler for the specified protocol; if it doesn't exist an exception will be thrown.

默认情况下,协议处理程序从默认位置动态加载。 但是,可以通过设置java.protocol.handler.pkgs系统属性添加到搜索路径。 例如,如果设置为myapp.protocols ,那么在http的情况下,URL代码将首先尝试加载myapp.protocols.http.Handler ,如果失败, http.Handler默认位置http.Handler

请注意,Handler类 必须是抽象类 URLStreamHandler的子类。

Additional Specification

Interfaces

ContentHandlerFactory 该接口为内容处理程序定义了一个工厂。
CookiePolicy CookiePolicy实现决定哪些cookie应该被接受,哪些应该被拒绝。
CookieStore CookieStore对象表示cookie的存储。
DatagramSocketImplFactory 该接口为数据报套接字实现定义了一个工厂。
FileNameMap 一个简单的接口,它提供了一种在文件名和MIME类型字符串之间进行映射的机制。
ProtocolFamily 代表一组通信协议。
SocketImplFactory 该接口为套接字实现定义了一个工厂。
SocketOption<T> 与套接字关联的套接字选项。
SocketOptions 获取/设置套接字选项的方法的接口。
URLStreamHandlerFactory 该接口为 URL流协议处理程序定义了一个工厂。

Classes

Authenticator 类Authenticator表示知道如何获取网络连接的身份验证的对象。
CacheRequest 表示用于在ResponseCache中存储资源的通道。
CacheResponse 表示从ResponseCache中检索资源的通道。
ContentHandler 抽象类 ContentHandler是从 URLConnection中读取 Object的所有类的超类。
CookieHandler CookieHandler对象提供回调机制,将HTTP状态管理策略实现挂接到HTTP协议处理程序中。
CookieManager CookieManager提供了CookieHandler的具体实现, CookieHandler cookie的存储与接受和拒绝cookie的策略分开。
DatagramPacket 这个类表示一个数据报包。
DatagramSocket 这个类表示一个用于发送和接收数据报包的套接字。
DatagramSocketImpl 抽象数据报和多播套接字实现基类。
HttpCookie HttpCookie对象表示一个http cookie,它携带服务器和用户代理之间的状态信息。
HttpURLConnection 支持HTTP特定功能的URLConnection。
IDN 提供在普通Unicode表示和ASCII兼容编码(ACE)表示之间转换国际化域名(IDN)的方法。
Inet4Address 此类表示Internet协议版本4(IPv4)地址。
Inet6Address 该类表示Internet协议版本6(IPv6)地址。
InetAddress 这个类表示一个Internet协议(IP)地址。
InetSocketAddress 该类实现IP套接字地址(IP地址+端口号)它也可以是一对(主机名+端口号),在这种情况下将尝试解析主机名。
InterfaceAddress 这个类表示一个网络接口地址。
JarURLConnection 到Java归档(JAR)文件的URL连接或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表单编码的实用工具类。
URLStreamHandler 抽象类 URLStreamHandler是所有流协议处理程序的公共超类。

Enums

Authenticator.RequestorType 请求认证的实体的类型。
Proxy.Type 代表代理类型。
StandardProtocolFamily 定义通信协议的标准系列。

Exceptions

BindException 表示尝试将套接字绑定到本地地址和端口时发生错误。
ConnectException 表示尝试将套接字连接到远程地址和端口时发生错误。
HttpRetryException 抛出以表示HTTP请求需要重试,但由于启用了流式传输模式,因此无法自动重试。
MalformedURLException 抛出以表明发生了格式错误的URL。
NoRouteToHostException 表示尝试将套接字连接到远程地址和端口时发生错误。
PortUnreachableException 表示在连接的数据报上收到ICMP端口不可达消息。
ProtocolException 抛出以表明底层协议中存在错误,例如TCP错误。
SocketException 抛出以指示创建或访问套接字时发生错误。
SocketTimeoutException 表示套接字读取或接受发生超时。
UnknownHostException 抛出以表明无法确定主机的IP地址。
UnknownServiceException 抛出以表明发生了未知的服务异常。
URISyntaxException 检查的异常抛出,表明一个字符串不能被解析为一个URI引用。

Hooray!