面向对象的程序设计-Java第三版第15章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《面向对象的程序设计-Java第三版第15章课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 Java 第三 15 课件
- 资源描述:
-
1、第15章 网络编程 第15章 网络编程 15.1 URL通信通信 15.2 Socket通信通信 15.3 UDP通信通信 第15章 网络编程 15.1 URL通信通信URL(Uniform Resource Locator,统一资源定位器)表示Internet/Intranet上的资源位置。这些资源可以是一个文件、一个目录或一个对象。当我们使用浏览器浏览网络上的资源时,首先需要键入URL地址,才可以访问相应的主页。例如:http:/:80/index.htmlhttp:/ 网络编程 表表15.1 URL地址的组成地址的组成 第15章 网络编程 一般的通信协议都已经规定好了开始联络时的通信端口
2、,例如,HTTP协议的缺省端口号是80,FTP协议的缺省端口号是21等。URL使用协议的缺省端口号时,可以不写出缺省端口号。所以,一般的URL地址只包含传输协议、主机名和文件名就足够了。网络通信中,我们常常会碰到地址(Address)和端口(Port)的问题。两个程序之间只有在地址和端口方面都达成一致时,才能建立连接。这与我们寄信要有地址、打电话要有电话号码一样。两个远方程序建立连接时,首先需要知道对方的地址或主机名,其次是端口号。地址主要用来区分计算机第15章 网络编程 网络中的各个计算机,而端口的定义可以理解为扩展的号码,具备一个地址的计算机可以通过不同的端口来与其他计算机进行通信。在TC
3、P协议中,端口被规定为一个在065535之间的16位的整数。其中,01023被预先定义的服务通信占用(如FTP协议的端口号是21,HTTP协议的端口号为80等)。除非我们需要访问这些特定服务,否则就应该使用102465535这些端口中的某一个来进行通信,以免发生端口的冲突。第15章 网络编程 15.1.1 URL类类要使用URL进行网络编程,就必须创建URL对象。创建URL对象要使用软件包中提供的.URL类的构造方法。1创建URL对象URL类提供的用于创建URL对象的构造方法有4个:(1)URL(String spec)方法。根据 String 表示形式创建URL对象。例如:URL file=
4、new URL(http:/ 网络编程(2)URL(String protocol,String host,String file)方法。根据指定的protocol、host、port号和file创建URL对象。其中的protocol为协议名,host为主机名,file为文件名,端口号使用缺省值。例如:http,index.html(3)URL(String protocol,String host,String port,String file)方法。这个构造方法与构造方法(2)相比,增加了1个指定端口号的参数。第15章 网络编程(4)URL(URL context,String spec)
5、方法。通过在指定的上下文中用指定的处理程序对给定的spec进行解析来创建URL。例如:URL base=new URL(file:/c:/ABC/xx.java);URL gk=new URL(base,gg.txt);中的URL对象gk是相对URL对象。javac在使用对象gk时会从对象base中查出文件gg.txt所在的位置:本地主机是c:/ABC/。对象gk指明的资源也就是file:/c:/ABC/gg.txt。如果在程序中不访问xx.java,那么在创建base的构造方法中则略去xx.java。创建gg的方法不变,gg指明的资源仍不变。第15章 网络编程 2URL类的常用成员方法类的常
6、用成员方法创建URL对象后,可以使用.URL类的成员方法对创建的对象进行处理。.URL的常用成员方法如表15.2所示。第15章 网络编程 表表15.2 URL类的常用成员方法类的常用成员方法第15章 网络编程 15.1.2 利用利用URL类访问网上资源示例程序类访问网上资源示例程序【示例程序C15_1.java】获取某个URL地址的协议名、主机名、端口号和文件名。package ch15;import .MalformedURLException;import .URL;public class C15_1 public static void main(String args)第15章 网络
7、编程 URL MyURL=null;try MyURL=new URL(http:/netbeans.org/kb/docs/java/quickstart.html);catch(MalformedURLException e)System.out.println(MalformedURLException:+e);System.out.println(URL String:+MyURL.toString();/获取URL对象转换成字符串 System.out.println(Protocol:+MyURL.getProtocol();/获取协议名第15章 网络编程 System.out.p
8、rintln(“Host:”+MyURL.getHost();/获取主机名 System.out.println(“Port:”+MyURL.getPort();/获取端口号 System.out.println(“File:”+MyURL.getFile();/获取文件名 该程序的运行结果如图15.1右下窗口所示。第15章 网络编程 图15.1 程序C15_1的运行结果 第15章 网络编程【示例程序C15_2.java】使用URL类的openStream()成员方法获取URL指定的网上信息。package ch15;import java.io.*;import .MalformedURLE
9、xception;import .URL;public class C15_2 public static void main(String args)String Str;InputStream st1;第15章 网络编程 /String ur=http:/netbeans.org/kb/docs/java/quickstart.html;/获取远程网上的信息 String ur=file:/E:/Java/ch15/src/ch15/C15_1.java;/获取本地网上的信息 try URL MyURL=new URL(ur);st1=MyURL.openStream();InputStr
10、eamReader ins=new InputStreamReader(st1);BufferedReader in=new BufferedReader(ins);while(Str=in.readLine()!=null)/从URL处获取信息并显示 System.out.println(Str);第15章 网络编程 catch(MalformedURLException e)/创建URL对象可能产生的异常 System.out.println(Cant get URL:);catch(IOException e)System.out.println(Error in I/O:+e.getM
11、essage();由于URL的openStream()成员方法返回的是InputStream类的对象,因此只能通过read()方法逐个字节地去读URL地址处的资源信息。这里利用BufferedReader对原始信息流进行了包装和处理,以提高I/O效率。运行的结果是显示出C15_1.java程序的内容。第15章 网络编程 15.1.3 使用使用URLConnection类访问网上资源类访问网上资源上面介绍的方法只能读取远程计算机节点的信息,如果希望在读取远程计算机节点的信息时还可向它写入信息,则需要使用软件包中的另一个类URLConnection。1创建创建URLConnection类的对象类的
12、对象要创建URLConnection对象必须先创建一个URL对象,然后调用该对象的openConnection()方法就可以返回一个对应其URL地址的URLConnection对象。例如:URL MyURL=new URL(http:/ con=MyURL.openConnection();第15章 网络编程 2建立输入建立输入/输出数据流输出数据流读取或写入远程计算机节点的信息时,要建立输入或输出数据流。我们可以利用URLConnection类的成员方法getInputStream()和getOutputStream()来获取输入和输出数据流。例如,下面的两行语句用于建立输入数据流:Inpu
13、tStreamReader ins=new InputStreamReader(con.getInputStream();BufferedReader in=new BufferedReader(ins);下面的语句行用于建立输出数据流:PrintStream out=new PrintStream(con.getOutputStream();第15章 网络编程 3读取远程计算机节点的信息或向其写入信息读取远程计算机节点的信息或向其写入信息要读取远程计算机节点的信息,可调用in.readLine()方法;向远程计算机节点写入信息时,可调用out.println(参数)方法。URLConnect
14、ion类是一个抽象类,它是代表程序与URL对象之间建立通信连接的所有类的超类,此类的一个实例可以用来读/写URL对象所代表的资源。出于安全性的考虑,Java程序只能对特定的URL进行写操作,这种URL就是服务器上的CGI(Common Gateway Interface,公共网关接口)程序。CGI是客户端浏览器与服务器进行通信的接口。下面通过一个例子来说明URLConnection类是如何使用的。第15章 网络编程【示例程序C15_3.java】使用URLConnection类从远程主机获取信息。package ch15;import java.io.*;import .*;class C15
15、_3 public static void main(String args)try String ur=“http:/”;/获取远程网上的信息 /String ur=file:/E:/Java/ch15/src/ch15/C15_1.java;/获取本地网上的信息第15章 网络编程 URL MyURL=new URL(ur);String str;URLConnection con=MyURL.openConnection();InputStreamReader ins=new InputStreamReader(con.getInputStream();BufferedReader in=
16、new BufferedReader(ins);while(str=in.readLine()!=null)System.out.println(str);in.close();catch(MalformedURLException mfURLe)System.out.println(MalformedURLException:+mfURLe);第15章 网络编程 catch(IOException ioe)System.out.println(“IOException:”+ioe);该程序的运行结果如图15.2所示。第15章 网络编程 图15.2 程序C15_3的运行结果 第15章 网络编程
17、 15.2 Socket通信通信Socket套接字是应用于网络通信中的重要机制。Socket最初是加利福尼亚大学Berkeley分校为UNIX操作系统开发的网络通信接口。随着UNIX操作系统的广泛使用,套接字成为当前最流行的网络通信应用程序接口之一。Java语言中采用的Socket通信是一种流式套接字通信,它采用TCP协议,通过提供面向连接的服务,实现客户/服务器之间双向、可靠的通信。包中的Socket类与ServerSocket类为流式套接字通信方式提供了充分的支持。第15章 网络编程 15.2.1 Socket的概念及通信机制的概念及通信机制1Socket的概念的概念Socket称为“套接
18、字”,也有人称为“插座”。在两台计算机上运行的两个程序之间有一个双向通信的链接点,而这个双向链路的每一端就称为一个Socket。第15章 网络编程 建立连接的两个程序分别称为客户端(Client)和服务器端(Server)。客户端程序申请连接,而服务器端程序监听所有的端口,判断是否有客户程序的服务请求。当客户程序请求和某个端口连接时,服务器程序就将“套接字”连接到该端口上,此时,服务器与客户程序就建立了一个专用的虚拟连接。客户程序可以向套接字写入请求,服务器程序处理请求并把处理结果通过套接字送回。通信结束时,再将所建的虚拟连接拆除。一个客户程序只能连接服务器的一个端口,而一个服务器可以有若干个
19、端口,不同的端口使用不同的端口号,并提供不同的服务。第15章 网络编程 2Socket通信机制通信机制利用Socket进行网络通信分为三个步骤:(1)建立Socket连接。在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。(2)数据通信。利用虚拟连接通道传送数据信息进行通信。(3)关闭。通信结束时将所建的虚拟连接拆除。利用包中提供的Socket类和ServerSocket类及其方法,可完成上述操作。Socket通信机制如图15.3所示。第15章 网络编程 图15.3 Socket通信机制 第15章 网络编程 从图15.3中可以看到,服务器端的程序首先选择一个端口(port)注册,然
20、后调用accept()方法对此端口进行监听,等待其他程序的连接申请。如果客户端的程序申请和此端口连接,那么服务器端就利用accept()方法来取得这个连接的Socket。客户端的程序建立Socket时必须指定服务器的地址(host)和通信的端口号(port#),这个端口号必须与服务器端监听的端口号保持一致。第15章 网络编程 15.2.2 Socket类与类与 ServerSocket类类中提供了两个类,即ServerSocket类和Socket类,它们分别用于服务器端和客户端的Socket通信,进行网络通信的方法也都封装在这两个类中。1ServerSocket对象与对象与Socket对象的构
21、造方法对象的构造方法Java在软件包中提供了ServerSocket类和Socket类对应的双向链接的服务器端和客户端,包含的主要构造方法如表15.3所示。第15章 网络编程 表表15.3 ServerSocket类与类与Socket类的构造方法类的构造方法 第15章 网络编程 2异常处理异常处理在建立Socket对象的同时要进行异常处理,以便程序出错时能够及时做出响应。(1)服务器端:在建立ServerSocket类的对象和取得Socket类的对象时都要进行异常处理,例如下面语句中的try-catch语句。ServerSocket server;Socket socket;try serve
22、r=new ServerSocket(3561);catch(Exception e)System.out.println(“Error occurred:”+e);try socket=server.accept();catch(Exception e)System.out.println(Error occurred:+e);第15章 网络编程(2)客户端:在建立Socket类的对象时要进行异常处理,例如下面的try-catch语句。Socket socket;try socket=new Socket(“Server Name”,3561);catch(Exception e)Syste
23、m.out.println(Error occurred:+e);第15章 网络编程 3获取输入获取输入/输出流输出流建立Socket连接后,就可以利用Socket类的两个方法getInputStream()和getOutputStream()分别获得向Socket类的对象读/写数据的输入/输出流。此时同样要进行异常处理,因此,通常将读/写数据的输入/输出流语句写在try-catch块中。例如:try InputStream ins=socket.getInputStream();OutputStream outs=socket.getOutputStream();catch(Exceptio
24、n e)System.out.println(“Error occurred:”+e);第15章 网络编程 4读读/写数据流写数据流获取Socket类的对象的输入/输出流后,为了便于进行读/写,需要在这两个流对象的基础上建立易于操作的数据流对象,如InputStreamReader类、OutputStreamReader类或PrintStream类的对象。建立数据流的对象可采用如下语句:InputStreamReader in=new InputStreamReader(ins);BufferedReader inn=new BufferedReader(in);OutputStreamRea
展开阅读全文