《Java语言程序设计 第2版 教学课件 ppt 作者 赵国玲 ch10》由会员分享,可在线阅读,更多相关《Java语言程序设计 第2版 教学课件 ppt 作者 赵国玲 ch10(44页珍藏版)》请在金锄头文库上搜索。
1、,Java程序设计,第10章 Java网络编程,本章主要内容 10.1 网络基础 10.2 URL编程 10.3 InetAddress类 10.4 Socket通信 10.5 应用实例,第10章 Java网络编程,第10章 Java网络编程,学习目标 了解TCP/ID协议、通信端口和URL概念等网络基础知识 掌握使用InetAddress类获取主机信息的方法 理解使用URL类访问网络资源的过程 掌握使用Socket实现网络通信的方法,10.1 网络基础,(一)TCP/IP协议,TCP/IP是Transmission Control Protocol/Internet Protocol(传输控
2、制协议/网际互联协议)的缩写。它起源于美国ARPANET网,由它的两个主要协议,即TCP协议和IP协议而得名。 TCP/IP是Internet上所有网络和主机之间进行交流所使用的共同“语言”,是Internet上使用的一组完整的标准网络连接协议。通常所说的TCP/IP协议实际上包含了大量的协议和应用,且由多个独立定义的协议组合在一起。因此,更确切的说,应该称其为TCP/IP协议集。,10.1 网络基础,图:TCP/IP参考模型,10.1 网络基础,图:TCP/IP协议集,10.1 网络基础,(二)通信端口,在Internet上,各主机之间通过TCP/IP协议发送和接收数据,各个数据包根据其目的
3、主机的IP地址进行互联网络中的路由选择。可见,把数据包顺利的传送到目的主机是没有问题的。但是,大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。,10.1 网络基础,通常,操作系统会给那些有需求的进程分配协议端口,每个端口由一个正整数标识,如80、139等。当目的主机接收到数据包后,会根据报文首部的目的端口号把数据发送到相应的端口,而与此端口相对应的那个进程将会获取数据并等待下一组数据的到来。 计算机主机通过通信协议(如TCP/IP)可于同一台主机上提供不同类型的服务,如FTP、HTTP、SM
4、TP等,通信协议通过通信端口区分Internet各种应用服务。通信端口是由16位(216)数值代表的,因而同一主机上可使用165535个通信端口所定义的Internet应用服务。,10.1 网络基础,端口被分为固定端口和动态端口两大类。固定端口是指不论何种操作系统,这些端口所代表的应用服务都相同,因此我们可以通过扫描这些端口来判断是否开启了相应的服务。国际认证组织IANA将11023号端口保留为固定端口。,10.1 网络基础,(三)URL的概念,URL是指统一资源定位符,是Uniform Resource Location的缩写。通俗的说,URL是Internet上用来描述信息资源的字符串,主
5、要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。 标准的URL由3部分组成:协议类型、主机名和路径名。,http:/ 网络基础,URL的构成如下: 信息服务方式:/信息资源的地址/文件路径 1. 信息服务方式 目前,WWW系统中编入URL的最普遍的服务连接方式有以下4种: HTTP:使用HTTP协议,提供超文本信息服务的WWW信息资源空间。 FTP:使用FTP协议,提供文件传送服务的FTP资源空间。 FILE:使用本地HTTP协议,提供超级文件信息服务的WWW信息资源空间。 TELNET:使用T
6、ELNET协议,提供远程登陆信息服务的TELNET信息资源空间。,10.1 网络基础,2. 信息资源的地址 信息资源地址是指提供信息服务的主机在Internet上的域名。例如,是山东电子职业技术学院WWW服务器的主机域名。信息资源地址的格式如下: 主机域名:端口号 一般情况下,由于常用的信息服务程序采用的是标准端口号,用户在URL中可以不必给出,如http:/和http:/:80是完全相同的。但是,当某些信息服务使用非标准的端口时,就要求用户必须在URL中进行端口的说明。,10.1 网络基础,3. 文件路径 文件路径指的是资源在主机中存放的具体位置。根据查询要求的不同,在给出URL时这一部分可
7、有可无。如果在查询要求中要求包括文件路径,那么在URL中就要具体指出要访问的文件名称。例如: http:/表示使用超文本传输协议HTTP访问信息资源,信息资源存储在域名为的主机上,该资源在主机中的路径为根目录,文件名使用了缺省的文件名,即index.htm或default.htm等。它提供服务时使用缺省端口号,缺省值为80。 ftp:/:22/pub/readme.txt表示使用文件传输协议FTP传送文件资源。主机域名为,使用的不是缺省的FTP端口号21,而是22。资源在主机中存放的路径和文件名为pub/readme.txt。,10.1 网络基础,(四)Java与网络编程,Java最初是作为一
8、种网络编程语言出现的,它能够使用网络上的各种资源和数据,与服务器建立各种传输通道,将自己的数据传送到网络的各个地方。Java类库提供了很强大的网络功能,因此我们可以借助它很轻松的完成这些工作。 Java中与网络相关的功能都定义在包中,其所提供的网络功能可大致分为三类: URL和URLConnection Socket通信 数据报通信,10.1 网络基础,URL和URLConnection URL表示Internet上某一信息资源的地址。当我们得到了一个URL对象后,就可以通过它来读取指定的WWW资源。如果我们同时还想输出数据,例如向服务器端发送一些请求参数,那么必须先与URL建立连接,然后才能
9、对其进行读写,这时就要用到URLConnection了。,10.1 网络基础,Socket通信 套接字是网络上运行的两个程序间双向通信的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的实现两台计算机之间的通信。套接字有两种:一种套接字在服务器端创建,叫做服务器套接字(ServerSocket);还有一种在客户端被创建,就是客户端套接字(Socket)。,10.1 网络基础,数据报通信 当用户进行网络编程时,除了可以选择流式通信外,还可以选择数据报通信。选择这种方式时,无需建立发送方和接收方的连接,每个数据报中都给出了完整的地址信息。数据报在网络上以任何可能的路径传往目的地,因此能否
10、到达目的地、到达时间以及内容的正确性都是不能被保证的。对于某些通信来说,并不需要严格保证传输的正确性,例如一个时钟服务,我们可以使用数据报通信。,10.2 URL编程,(一)创建URL对象,为了处理方便,Java将URL封装成URL类,我们可以用一个URL对象描述完整的URL信息。我们可以通过下面的构造方法来初始化一个URL对象: public URL(String spec); 通过一个表示URL地址的字符串构造一个URL对象。 public URL(URL context, String spec); 通过基地址和相对URL构造一个URL对象。 public URL(String prot
11、ocol, String host, String file); 通过指定的协议、主机名、路径和文件名创建一个URL对象。 public URL(String protocol, String host, int port, String file); 通过指定的协议、主机名、端口号、路径和文件名创建一个URL对象。,10.2 URL编程,类URL的构造方法都声明抛出非运行时异常MalformedURLException,因此创建URL对象时,我们必须要对这一异常进行处理,例如通过try-catch语句进行捕获。 try URL url=new URL(); catch(MalformedUR
12、LException e) /处理异常 ,10.2 URL编程,(二)获取URL对象的属性,一个URL对象创建后,就可以通过类URL所提供的方法来获取它的属性: public String getProtocol( ); 获取该URL的协议名。 public String getHost( ); 获取该URL的主机名。 public String getFile( ); 获取该URL的文件名。 public String getPath( ); 获取该URL的路径。 public int getPort( ); 获取该URL的端口号,如果没有设置端口,返回-1。,10.2 URL编程,【例10
13、-1】创建一个URL对象,并输出它的属性。 import .*; public class ParseURL public static void main(String args) try URL base=new URL(“http:/“); URL url=new URL(base,“Index.html“); System.out.println(“协议:t“+url.getProtocol( ); System.out.println(“主机名:t“+url.getHost( ); System.out.println(“端口:t“+url.getPort( ); System.ou
14、t.println(“路径:t“+url.getPath( ); System.out.println(“文件名:t“+url.getFile( ); catch(MalformedURLException e) e.printStackTrace( ); ,程序的运行结果如下: 协议: http 主机名: 端口: -1 路径: /Index.html 文件名:/Index.html,10.2 URL编程,(三)使用URL类访问网络资源,当我们得到一个URL对象后,可以通过类URL的openStream( )方法打开一个到资源的输入流并从流中读取数据。,10.2 URL编程,【例10-2】利用
15、类URL的openStream( )方法获取网上资源并输出到屏幕上。 import java.io.*; import .*; public class ShowWebResource public static void main(String args) try URL url = new URL(“http:/ BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream( ); String line = “; while (line = in.readLine( ) != null) System.out.println(line); in.close( ); catch (Exception e) e.printStackTrace( ); ,程序运行后,我们将得到http:/