ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:90.75KB ,
资源ID:6617291      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6617291.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JAVA讲义第9章.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JAVA讲义第9章.docx

1、JAVA讲义第9章第9章 网络编程技术 9.1网络技术基础Java语言能够风靡全球的重要原因之一就是和网络的紧密结合。这不仅体现在用Java可以很方便地在网络的主页中嵌入Applet,还体现在Java专门为网络通信提供的软件包。软件包为当前最常用的TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)网络协议提供了相应的类,使用户能够方便地编写出基于这两个协议的网络通信程序。那么,什么叫协议呢?协议是一组规则,它定义了计算机之间相互通信的的规程和约定,在计算机通信中起着非常重要的作用。网络协议管理着网络计算机和网络应用程序之

2、间的信息流动,其模型如图9.1所示。在Internet/Intranet网络上的计算机之间的通信通常使用的是TCP和UDP协议。应用层(例如:HTTP,FTP,Telnet)传输层(例如:TCP,UDP)网络层(例如:IP)链路层(例如:设备驱动程序)物理层(网络的物理连接设备)图9.1 计算机的网络通信协议模型TCP是一种可靠的网络通信协议,它的通信方式就像平时打电话一样,首先通话的双方必须建立一个连接(类似于打电话时拨号),然后才能接收数据(类似于打电话时的交谈),通信结束后,关闭网络连接(类似于通话的双方挂上电话)。TCP通信协议在通信双方提供了一个点对点的通道,保证了数据通信的可靠进行

3、,否则,会提示通信出错。典型的TCP应用程序有超文本传输协议(HyperText Transfer Protocol,HTTP),文件传输协议 (File Transfer Protocol,FTP)和远程登录协议Telnet。UDP提供了一种基于非连接的网络通信协议,它的通信方式非常类似于邮信,每次通信时发送一个独立数据包,发送的顺序并不重要,也无法保证。在网络通信质量不断提高的今天,UDP的应用相当广泛,它与TCP相比具有系统开销小的优点。UDP的一个典型的应用是ping,ping命令的目的是测试通过网络连接的计算机之间的通信是否畅通。实际上,除了TCP和UDP以外,还有一个常用的IP(I

4、nternet Protocol)协议,它与UDP很相似,是使用数据包进行传输的不可靠、无连接的协议。IP协议只能将数据发送到主机,而UDP可以将数据发送到一台主机的多个应用程序。IP协议为网络上每台计算机定义了一个惟一的标识,称为IP地址。一个IP地址是一个32位的整数。根据IP地址,传送的信息就可以通过路由找到目标计算机。TCP和UDP都提供了端口的概念。端口(Port)和IP地址一起为网络通信的应用程序之间提供了一种确切的地址标识作用,IP地址标识了发送数据的目的计算机,而端口标识了将数据包发送给目的计算机上的具体应用程序上,其工作原理如图9.2所示。端口号的范围从0到65535,102

5、4以下的端口号由系统使用。 来自网络的数据包图9.2 端口与IP地址的标识作用 9.2使用URL类J提供了利用URL实现服务器访问的类,在此基础上,可以实现客户端和服务器端的通信,并可以实现多客户的通信。9.2.1 URL的基本概念【引例】在Internet网络上欲查找美国微软公司的信息资源,需要在浏览器中输入如下格式的字符序列: 于是微软公司的主页信息就会出现在个人计算机屏幕上。那么这些字符序列代表什么含义,遵循了什么原则呢?实际上它使用了URL的基本概念。URL又称为统一资源定位器(Uniform Resource Locator)。IP地址定位了在互联网上的一台计算机,端口定义了在这台计

6、算机上提供的服务,而URL提供了网上资源的一个指针。该资源可以是一个简单的文件,或者一个目录,也可以是一个复杂的对象。通过URL,可以访问Internet服务器,浏览器通过解析给定的URL可以在网络上查找相应的文件和网络资源。一般地,一个URL的语法格式如下: :/#应用协议:指与某个服务相关的协议。例如,http,ftp,telnet等。主机名:可以是某台计算机的主机域名或IP地址。例如,引例中的是一个主机域名,而207.46.197.101则是该主机的IP地址。端口号:指出与服务相关的端口号,可以省略。如果需要,则在端口号前要加“:”。例如,引例中的“:80”就是指定的端口号。文件或目录名

7、:可以是以html(或htm)为后缀的文件名,也可以是目录名。例如,引例中的ms.htm。锚链指针:指出文件中的某个起始入口点,可以省略。如果需要,则在锚链指针前要加“#”。例如:,ftp:/,telnet:/都是URL常用的地址形式。 9.2.2 URL类【引例】利用URL类读取网络资源的程序示例如下。import java.io.*;import .*;public class getURL public static void main (String args) throws Exception /创建一个URL对象 URL myURL=new URL(http:/www. :80/i

8、ndex.html#ach1); System.out.println(protocol=+myURL.getProtocol(); /输出协议名 System.out.println(host=+myURL.getHost(); /输出主机名 System.out.println(filename=+myURL.getFile(); /输出文件名 System.out.println(port=+myURL.getPort(); /输出端口地址 System.out.println(ref=+myURL.getRef(); /输出锚链指针 该引例的功能:得到URL地址http:/www. :

9、80/index.html#ach1中的协议名称、主机名、文件名、端口号及锚链指针,它是通过URL类来完成的。引例中import .*是Java语言进行网络编程时必须引用的程序包,本节中所涉及的类大都在该程序包中。Java语言提供的.URL类,目的是利用URL进行网络编程。URL类给程序员提供了一个强大的工具来编写一个客户应用程序,以便从Internet上获取各种信息。 1.构造方法 URL类提供了几个构造方法,以便创建URL对象,其目的就是为了在Internet/Intranet上确定资源的位置,这也是操作这些资源的前提,引例中的new URL(http:/www. :80/index.ht

10、ml#ach1)就是URL的一个构造方法。URL类常用的构造方法有如下一些:(1)public URL(String protocol,String host,int port,String file) 其中,protocol:协议名称;host:主机名或IP地址;port:端口号;file:主机目录或文件。 (2)public URL(String protocol,String host,String file) (3)public URL(String spec) 其中,spec是一个当作URL对象来分析的字符串。(4)public URL(URL context,String spec

11、) 其中,context是一个URL对象,与spec参数一起使用,通常作为spec参数的上下文,即当spec参数不完全时,提供一种补充。格式4的功能:根据一个非语法分析的字符串创建一个相对的URL。当分析了spec参数后,如果没有指定协议名,则使用context参数中的协议名;如果两者的协议名相同,context参数中的host,port,file等参数将在新创建的URL中使用。 例如,创建一个格式1的URL对象如下。URL myURL=new URL(http,80,/);创建一个格式4的URL对象如下。URL myURL=new URL(http:/www. URL yourURL=new

12、 URL(myURL,index.html);需要说明的是,在创建URL类的对象时,常常会抛出一个MalformedURLException异常和其他异常。 2.方法 URL类中常用的方法有如下一些: (1)public String getProtocol() 功能:得到URL对象的协议名。(2)public String getHost()功能:得到URL对象的主机名。(3)public String getFile()功能:得到URL对象中给定主机上资源的绝对路径和文件名。 (4)public int getPort() 功能:得到URL对象的端口号,如果没有设定端口号,则返回-1。(5

13、)public String getRef()功能:得到URL对象的锚链指针。(6)public URLConnection openConnection() throws java.io.IOException功能:得到一个URLConnection对象实例,它代表了与远程对象的连接。(7)public final InputStream openStream() throws java.io.IOException功能:打开与URL的一个连接,返回一个从该连接读到的InputStream对象实例。(8)public final Object getContent() throws java

14、.io.IOException功能:得到URL的内容。 【9.1 】使用URL类的简单程序实例。import java.io.*;import .*;public class getURL public static void main (String args) throws Exception /创建URL对象 URL myURL=new URL(http:/www. :80/ttt.html#aaa);System.out.println(protocol=+myURL.getProtocol(); /获得协议名称 System.out.println(host=+myURL.getHo

15、st(); /获得主机名 System.out.println(filename=+myURL.getFile(); /获得文件名 System.out.println(port=+myURL.getPort(); /获得端口号 System.out.println(ref=+myURL.getRef(); /获得锚链指针 程序运行结果如下:protocol=httphost=filename=/ttt.htmlport=80ref=aaa【9.2 】使用URL类直接读取信息的示例。import .*;import java.io.*;public class myURLRead public

16、 static void main (String args) throws Exception URL myPage=new URL( /创建URL对象/打开myPage的连接,建立相关的缓冲输入流。 BufferedReader inBuf=new BufferedReader(new InputStreamReader(myPage.openStream(); String inputLine; inputLine=inBuf.readLine(); /读取一行数据 while(inputLine!=null) /数据未读完 System.out.println(inputLine);

17、/输出一行数据 inputLine=inBuf.readLine(); /继续读一行数据 inBuf.close(); /关闭缓冲输入流 需要注意的是,为了得到正确的结果,在运行本章的一些程序之前,必须确保程序所在的计算机已与Internet网正确连接。上例程序中的主机是假设的,如果将主机名改为,那么,程序运行结果如图9.3所示。本程序具体思路如下:首先创建一个URL对象,然后调用方法openStream读取网络信息的字节位。为了提高它的灵活性,将该方法加入类BufferedReader创建的inBuf对象中,这样就可以通过类BufferedReader的readLine方法一次读取一行数据,

18、直到文件空。最后关闭inBuf对象,以释放系统资源。图9.3 例9.2程序运行结果 9.2.3 URLConnection类【引例】利用URLConnection类读取网络资源的程序示例如下。 import .*;import java.io.*;public class myURLConnectionRead public static void main (String args) throws Exception URL myPage=new URL( /创建URL对象 URLConnection con=myPage.openConnection(); /创建URLConnection

19、对象 System.out.println(con.getURL(); /获得指定URL的域名 System.out.println(con.getContentLength(); /获得信息长度 System.out.println(con.getContentType(); /获得资源类型 System.out.println(con.getContentEncoding(); /获得信息码 System.out.println(con.getExpiration(); /获得终止日期 System.out.println(con.getDate(); /获得信息发送日期 System.o

20、ut.println(con.getLastModified(); /获得信息修改的最后日期 该引例的功能:得到指定URL资源的域名、信息长度、资源类型、信息编码、信息终止日期、信息发送日期、信息修改的最后日期,它是通过URLConnection类来完成的。 Java语言提供了两种方法读取数据,一种是通过URL对象直接得到相关的网络信息,如例9.2所示;另一种是先得到一个URLConnection实例,再得到InputStream或InputStream对象,然后读取数据。前者是一种简单、直接的方法,但缺乏灵活性,并且只能读取只读信息,后者提供了更加灵活有效的方法来读取网络资源。 URLCon

21、nection类是一个抽象类,是实现应用程序和URL之间通信连接的所有类的超类,该类的实例可以用来读写URL所指的资源。在创建了URL对象之后,可以使用URL对象的openConnection()方法来创建URLConnection对象实例,然后就可以使用下面的方法完成各种各样的操作。 1获取网络信息的方法 获取网络资源信息的方法如表9-1所示。表9-1 URLConnection类获取信息的常用的方法方法说明abstract public void Connect()打开与URL所指定资源的一个通信连接,如果调用该方法时连接已经打开,则忽略该调用。public URL getURL()获得U

22、RLConnection对象实例的URL域名。public int getContentLength()获得信息长度。public String getContentType()获得资源类型。public String getContentEncoding()获得信息的编码。public long getExpiration()获得信息终止日期。public long getDate()获得信息发送日期。public long getLastModified()获得信息修改的最后日期。public String getHeaderField(String name)获得给定索引的标题字段。pu

23、blic Object getContent()获得连接的资源内容。public InputStream getInputStream()获得一个InputStream类实例。public OutputStream getOutputStream()获得一个OutputStream类实例。 2设置或获得相应的参数值的方法为了获取网络资源信息,常常需要设置或获得相应的参数。URLConnection类设置或获得相应参数值的方法如表9-2所示。表9-2 URLConnection类设置或获得参数的常用方法方法说明public void setDoInput(Boolean doinput)设置UR

24、LConnection.DoInput的值。public Boolean getDoInput()获得URLConnection.DoInput的值。public void setDoOutput(Boolean dooutput)设置URLConnection.DoOutput的值。public Boolean getDoOutput()获得URLConnection.DoOutput的值。public void setAllowUserInteraction(Boolean allowuserinteraction)设置URLConnection.AllowUserInteraction的

25、值。public Boolean getAllowUserInteraction()获得URLConnection.AllowUserInteraction的值。public void setUseCaches(Boolean usecaches)设置URLConnection.UseCaches的值。public boolean getUseCaches()获得URLConnection.UseCaches的值。public void setIfModifiedSince(long inmodifiedsince)设置URLConnection. IfModifiedSince的值。publ

26、ic long getIfModifiedSince()获得URLConnection. IfModifiedSince的值。public void setRequestProperty(String key, String value)设置URLConnection. RequestProperty的值,key为关键字,value为与key相对应的值。public String getRequestProperty(String key)获得URLConnection. RequestProperty的值。 需要说明的是,如果使用某些设置方法(如setDoOutput、setUseCache

27、s等)设置各种参数时,必须在URLConnection对象创建之后和连接之前进行。 9.2.4 应用实例【9.3 】利用URLConnection读取数据的示例。 import .*;import java.io.*;public class myURLConnectionRead public static void main (String args) throws Exception URL myPage=new URL( /创建URL对象实例 URLConnection con=myPage.openConnection();/创建URLConnection实例con InputStr

28、eam is=con.getInputStream(); /建立一个输入流is/*建立缓冲输入流*/ BufferedReader inBuf=new BufferedReader(new InputStreamReader(is); String inputLine; /*读取数据,直到文件空*/ while(inputLine=inBuf.readLine()!=null) System.out.println(inputLine); inBuf.close(); /关闭缓冲输入流 上例程序运行后,与例9.2 有相同的功能。但是它不是通过直接从URL对象中读取资源信息,而是创建一个URLC

29、onnection类的对象con,通过con来读取资源信息。程序的具体思路如下:首先创建一个URL对象,然后调用方法openConnection创建URLConnection类的一个实例con,接着调用URLConnection类的方法getInputStream建立输入流is,通过is对网络资源进行各种操作。请读者留意本例与例9.2的区别。【9.4 】从Internet/Intranet下载HTML文件的示例。import .*;import java.io.*;import java.util.*;public class UnloadHTML public static void main (String args) throws Exception try String

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1