122Java网络编程概述 上述的 Client/ Server体系结构实际上是网络计算结构中比较基本的结构 目前,随着Inη ternet的迅速普及和推广,出现了更加复杂的网络计算结构, 如 Client,/ Web sever/App| ication server、 Browser/ Web server等,采用 这些计算结构将把网络应用划分为分工更细的部分。一个 Client程序需要 能够工作在不同的 Client计算杋上,如果这些机器的软硬件环境不同, Client程序的跨平台功能就是必不可少的了。同样,对于 Server来说,跨 平台功能可以提高网络应用的普适性,使之能工作在更广泛的范围里 从这个意义上来说,Java是适合于编写网络应用的语言。另外Java的平 台无关特性还大大简化了Java应用的升级和维护工作,进一步巩固了 Java网络计算工具的地位
上述的Client/Server体系结构实际上是网络计算结构中比较基本的结构。 目前,随着Internet的迅速普及和推广,出现了更加复杂的网络计算结构, 如Client/Web Sever/Application Server、Browser/Web Server等,采用 这些计算结构将把网络应用划分为分工更细的部分。一个Client程序需要 能够工作在不同的Client计算机上,如果这些机器的软硬件环境不同, Client程序的跨平台功能就是必不可少的了。同样,对于Server来说,跨 平台功能可以提高网络应用的普适性,使之能工作在更广泛的范围里, 从这个意义上来说,Java是适合于编写网络应用的语言。另外Java的平 台无关特性还大大简化了Java应用的升级和维护工作,进一步巩固了 Java网络计算工具的地位。 12.2 Java网络编程概述
123]ava网络类和接口 Java中有关网络方面的功能都定义在 java. net程序包中。Java所提供的网络功能 可大致分为三大类 (1)URL类和 URLConnection类这是三大类功能中最高级的一种。通过URL的网 络资源表达方式,很容易确定网络上数据的位置。利用URL的表示和建立,Java 程序可以直接读入网络上所放的数据,或把自己的数据传送到网络的另一端。 (2) Socket类,即套接字,可以想像成两个不同的程序通过网络的通道,而这 是传统网络程序中最常用的方法。一般在TCP/IP网络协议下的客户服务器软件采 用 Socket作为交互的方式。 (3) Datagram类,是这些功能中最低级的一种。其他网络数据传送方式,都假 想在程序执行时,建立一条安全稳定的通道。但是以 Datagram的方式传送数据时, 只是把数据的目的地记录在数据包中,然后就直接放在网络上进行传输,系统不 保证数据一定能够安全送到,也不能确定什么时候可以送到。也就是说, Datagram不能保证传送质量。 另外, inetaddress类也是经常应用的类,它可以用于标识网络上的硬件资源。它 提供了一系列描述、获取及使用网络资源的方法。每个 InetAddress对象都包含IP 地址、主机号等信息。 InetAddress类没有构造函数,因此不能用new来构造 InetAddress实例。通常是用它提供的静态方法来获取
Java中有关网络方面的功能都定义在java.net程序包中。Java所提供的网络功能 可大致分为三大类: (1)URL类和URLConnection类这是三大类功能中最高级的一种。通过URL的网 络资源表达方式,很容易确定网络上数据的位置。利用URL的表示和建立,Java 程序可以直接读入网络上所放的数据,或把自己的数据传送到网络的另一端。 (2)Socket类,即套接字,可以想像成两个不同的程序通过网络的通道,而这 是传统网络程序中最常用的方法。一般在TCP/IP网络协议下的客户服务器软件采 用Socket作为交互的方式。 (3)Datagram类,是这些功能中最低级的一种。其他网络数据传送方式,都假 想在程序执行时,建立一条安全稳定的通道。但是以Datagram的方式传送数据时, 只是把数据的目的地记录在数据包中,然后就直接放在网络上进行传输,系统不 保证数据一定能够安全送到,也不能确定什么时候可以送到。也就是说, Datagram不能保证传送质量。 另外,InetAddress类也是经常应用的类,它可以用于标识网络上的硬件资源。它 提供了一系列描述、获取及使用网络资源的方法。每个InetAddress对象都包含IP 地址、主机号等信息。InetAddress类没有构造函数,因此不能用new来构造 InetAddress实例。通常是用它提供的静态方法来获取。 12.3 Java网络类和接口
124基于URL的网络编程 在 Java.net包中,提供了类URL来表示URL。类URL提供 了很多构造方法来生成一个URL对象: public UrL(String spec) public URLOURLcontext, String spec) public UrL(String protocol, String host, String file) public UrL(String protocol, String host, int port, String file) 以下是一些具体的构造实例 Url urll = new UrlcHttp:/gis.pku.edu.cn/map/index.htmp); URL base= new URL(“hte:/ gis. pku.edu.cn”); URL ur= new URI(base,“ myworkl.html”); URL ur3 =new URL(base, "mywork2 htmI); Url url = new UrlchTtp,"Gis.pku.edu.cn","/-lyw/test.htmp") UrlurbnewUrlchTtp,"Www.Abc.com,8080,"/java/network.htmp); 另外还有两种稍微复杂些的构造方法(参见JDK文档)
12.4 基于URL的网络编程 在java.net包中,提供了类URL来表示URL。类URL提供 了很多构造方法来生成一个URL对象: public URL(String spec) public URL(URL context, String spec) public URL(Stringprotocol, String host, String file) public URL(Stringprotocol, String host, int port, String file) 以下是一些具体的构造实例: URL url1 = new URL(“http://gis.pku.edu.cn/map/index.html”); URL base = new URL(“http://gis.pku.edu.cn”); URL url2 = new URL(base, “mywork1.html”); URL url3 = new URL(base, “mywork2.html”); URL url4 = new URL(“http”, “gis.pku.edu.cn”,“/~lyw/test.html”); URL url5 = new URL(“http”, “www.abc.com”, 8080, “/java/network.html”); 另外还有两种稍微复杂些的构造方法(参见JDK文档)
124基于URL的网络编程 当创建URL时发生错误,系统会产生例外 MalformedURLException,这是非运行时例外,必须在程 序中捕获处理。 URLurll.url2 url3: url=new URL(file: /D: /image/example.gif); url2= new UrlchTtp:/gis.pku.edu.cn/map/); url3= new URL(ur2,“ test. gif”); catch(MalformedURLException e) Display ErrorMessageO
当创建URL时发生错误,系统会产生例外 MalformedURLException,这是非运行时例外,必须在程 序中捕获处理。 URL url1,url2,url3; try{ url1 = new URL(“file:/D:/image/example.gif”); url2 = new URL(“http://gis.pku.edu.cn/map/”); url3 = new URL(url2, “test.gif”); }catch(MalformedURLException e) { DisplayErrorMessage(); } 12.4 基于URL的网络编程