第十六章 Java 网络编程.ppt_第1页
第十六章 Java 网络编程.ppt_第2页
第十六章 Java 网络编程.ppt_第3页
第十六章 Java 网络编程.ppt_第4页
第十六章 Java 网络编程.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十六章网络通信,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,Internet寻址Internet上的每台计算机必须能够唯一的标识出来,IP地址是用于唯一标识连接到Internet的计算机的数字地址。IP地址实际上是由32位二进制数组成,如:23,符号形式如:IP地址唯一标识了Internet上的计算机,而URL则标识了这些计算机上的资源。更具体地说,URL充当了一个指针,指向web上的web页、二进制文件以及其他的信息对象。,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,统一资源定位符(URL)浏览器的地址里输入的网站地址叫统一资源定位符(URL,UniformResourceLocator)。当在浏览器的地址框中输入一个URL或是单击一个超链接时,URL就确定了要浏览的地址。浏览器再通过超文本传输协议(HTTP,HypertextTransferProtocol)将Web服务器上站点的网页代码提取出来,并解释成漂亮的网页。这样就可以由URL查找到WWW资源,如Web网页、文本文件、图形图象文件和音频视频文件等。,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,URL组成例如:,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,用Java实现URL在Java中,包里面的类是进行网络编程的,其中.URL类.URLConnection类使编程者能很方便的利用URL在internet上进行网络通信。常用URL类有以下几种构造方法:URL(Stringspec)URL(Stringprotocol,Stringhost,intport,stringfile)URL(Stringprotocol,Stringhost,intport,stringfile,URLStreamHandlerhandler)URL(Stringprotocol,Stringhost,Stringfile)URL(URLcontext,Stringspec)URL(URLcontext,Stringspec,URLStreamHandlerhandler),面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,最简单的构造方法内可以简单的用一个字符串生成URL对象,如:URLu=newURL(“其中80代表端口号。,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,另外还可以构造相对的URL对象,例如URLu=newURL(base,”#bookmark”);这种构造方法经常会用于JavaApplet,例如获取本Applet所在目录内的“A.txt”文本URL对象可以表示为:URLur11=newURL(getDocumentBase(),”A.txt”);或者是:URLur12=newURL(getCodeBase(),”A.txt”);,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,在构造URL对象而使用其构造方法时会抛出MalformedURLException非运行时异常,因此生成URL对象时,必须对这一异常进行处理。例如:tryURLmyURL=newURL(“catch(MalformedURLExceptione)e.printStackTrace();,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,成功创建了URL对象后,就可以练习其他有趣的java网络功能了,例如,可以在Applet中链向另外的web页面,下面的代码就能实现这个功能:getAppletContext().showDocument(url);getAppletContext()方法是在Applet类中定义的,所以在小应用程序中可以放心使用。showDocument()实际上完成定位到另一个web页面的工作,程序中只需要提供URL,其他工作由java自动完成.请看example11_1,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,通过URL对象可以调用它的方法来获得URL各部分属性,以下的方法是URL类对象常用到的方法:getDefaultport():返回缺省的端口号。getFile():获得URL指定资源的完整文件名getHost():返回主机名。getPath():返回指定资源文件目录和文件名getPort():返回端口号,默认-1getProtocol():返回表示URL中协议的字符串对象。getRef():返回URL中的HTML文档标记,即#号标记。getUserInfo():返回用户信息。toExternalForm():返回完整的URL字符串。toString():返回完整URL字符串。例testURL.java,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,从网络上获得资源Java程序使用URL目的就是从网络上获取声音、图象、HTML文档及文件数据等资源,以便对获得资源进行处理。例如Java程序可以每隔一定时间读取某网络结点提供的最新数据,并以图表的形式显示出来。在编程处理上,一般先生成一个URL类型的对象,然后用Java中相应的方法获取该对象所代表的资源。,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,获取图象JavaApplet可以直接从所在的目录下找到指定的图象文件,例如以下代码:publicvoidinit()Imageimg=getImage(getDocumentBase(),”test.gif”);小程序在初始化的时候先用getImage(getDocumentBase(),图象文件名)从HTML文档所在位置调用图象“test.gif”,并由此生成一个Image类型的对象image。另外还可以从网络上其他节点获取图像,关键是创建对应于网络节点的Image类型的对象,在获得Image类型对象之后便可以对其进行任何可能的图像操作。小程序采用getImage(newURL(url)方法来获得指定网络资源路径上的图像。例:testGetImag,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,获取声音Java从网络上获取声音文件并播放声音的编程方法有两类,一类是利用Applet类提供的play(URL)及play(URL,String)直接播放网络上的声音文件,另一类是通过getAudioClip(URL)或getAudioClip(URL,String)先从网络上获取声音文件,并生成AudioClip类型的对象,然后对该对象进行操作。例testGetSound.java,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.1URL,获取文档利用Java.applet.Applet提供的getAppletContext().showDocument(URL)可以显示其他节点的HTML文档,在调用这个方法之前还要首先指定文档的网络资源的URL。例:testGetDoc.java,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.2InetAddress,Internet寻址(续)包可以用32位int形式来操作32位的IP地址(即Internet主机地址)。类InetAddress实际上是可以把Internet地址换算成代表该地址的对象。java就是靠这个类来显示Internet地址以及相关信息的。InetAddress有以下常用的方法,这些方法在网络编成上是相当重要的:,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.2InetAddress,getAddress():返回IP地址的字节形式.getAllByName():返回指定主机名的ip地址.getByAddress():返回指定字节数组的ip地址形式.getByName():返回主机地址的字符串形式.getHostAddress():返回指定主机名的ip地址对象.getHostName():返回主机名.getLocalHost():返回当前主机名.hashCode():返回InetAddress对象的哈希码.toString():返回地址转换成的字符串.,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.2InetAddress,InetAddress类没有提供构造函数,所以不能用new方法来创建它的对象,而只可以调用静态方法gerLocalHost()、getByName()、getByAddress()等来生成InetAddress类的实例。例如获得本地主机的Internet地址对象实例可以是:InetAddressia=InetAddress.getLocalHost();要测试剩下的几个方法,程序运行的主机首先必须联到Iternet上活动的TCP/IP网上。其中原因就是它需要通过域名系统才能查到真正的域名。例:testInetAddress.java及结果截图,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,套接信道读取IP地址标识Internet上的计算机,端口号标识正在计算机上运行的进程(程序)。端口号与IP地址组合得出一个网络套接字。端口号被规定为一个16位的整数065535,其中01023被预先定义的服务通信占用(如telnet占用端口23,http占用端口80等)除非我们需要访问这些特定服务,否则,就应该使用102465535这些端口中的某一个进行通信,以免发生端口冲突。,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,对于超出了URL和URLConnection类所提供的连网应用程序,例如,对于其他协议应用程序,Java提供了套接口(Socket)和服务套接口类(ServerSocket)作为标准的TCP套接口编程技术的抽象,通过他们以及Java其他包中的类尤其是I/O流的类,可以实现主机与主机之间的对话,甚至于常见的聊天室应用的程序。,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,套接信道一般都是端到端的,所以它是双方面的,两端都有各自的IP地址和主机名等网络信息,一个套接信道的两端都分别于两个主机建立套接关系,当这种套接关系确定好以后就可以进行端到端的消息通信。这种形式中所涉及的两端一般是把一端称之为客户端,而另一端称为服务器端。服务器端会执行一个总是进行的线程用来监听特定端口的情况,当接收到客户端发送的“握手”请求之后,创建与客户端的连接,这样就完成了端与端之间的连接,这以后就可以进行端与端之间信息发送了。,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,套接口(Socket)客户端的程序使用Socket类建立与服务器的套接字连接。Socket是网络上运行的两个程序间双向通信的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递.在Java中,有专门的Socket类来处理用户的请求和响应.利用Socket类的方法,就可以实现两台计算机之间的通信.这个套接口的类就是.Socket,他有很多种构造方法来创建不同形式的Socket对象.,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,Socket()Socket(InetAddressaddress,intport)Socket(InetAddresshost,intport,booleanstream)Socket(InetAddressaddr,intport,InetAddressAddr,intlocalport)Socket(SocketImplimpl)Socket(Stringhost,intport)Socket(Stringhost,intport,booleanstream)Socket(Stringhost,intport,InetAddresslocalAddr,intlocalport),面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,其中InetAddress对象表示将要连接的地址,port表示连接的地址的端口,host表示连接地址的主机名.在创建套接口之后,最好是设置它的有效期限值,这将决定应用程序将为数据的到达而等待多长时间,当时间到了的时候,接口将断开,这样就从一方面节约了网络上的通道资源.这个有效期的设定是用Socket对象的setSoTimeOut(int)方法来完成实现的,方法在时间到达期限的时候将会引发InterruptedIOException.例如设置等待有效期是1m,则它的表现形式为:,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,trysockets=newSocket();catch(IOExceptione)trys.setSoTimeOut(60000);catch(InterruptedIOExceptione)s.close();e.printStackTrace();,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,其中setSoTimeOut()方法的入口参数表示的时间是毫秒时间,建立Socket时可能发生IOException例外。Socket类还有以下常用的方法来帮助实现端口的套接等功能:Close():关闭套接口.getchannel():返回和此套接口连接的通道.getInetAddress():返回和此套接口连接的地址对象.getInputStream():返回和此套接口链接的输入流getLocalAddress():返回套接口本地的地址对象.getLocalport():返回套接口本地的地址端口.getOutputStream():返回和此套接口连接的输出流.getPort():返回和此套接口连接的地址端口.isClosed():判断此套接口是否关闭.isConnected():判断此套接口是否断开.shutdownInput():关闭套接口的输入流.shutdownOutPut():关闭套接口的输出流.toString():返回套接口字符串.,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,当套接字连接socket建立后,可以想象一条通信“线路”已经建立起来。Socket可以使用getInputStream()获得一个输入流,然后用这个输入流读取服务器放入“线路”的信息,还可以使用方法getOutputStream()获得一个输出流,用这个输出流将信息写入“线路”。在实际编写程序时,当需要向指定的套接口接收可能会有的输入流的时候,需要从套借口获得输入流,然后再用其他过滤器流加在这个基本输入流之上,最后进行流的信息的读取.,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,例如以下代码形式完成了读取套接口输入流信息的操作.TryBufferedReaderbr=newBufferedReader(newInputStreamReader(newSocket().getInputStream();/br.read()br.close();catch(Exceptione)e.printStacktrace();,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,同理,下面的代码也完成了向套接口发送数据流的操作.TryprintWriterpw=newPrintWriter(newOutputStreamWriter(newSocket).getOutputstream(),true);/pw.println()pw.close();catch(Exceptione)e.printstackTrace();,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,服务器套接口我们已经知道客户端负责建立客户到服务器的套接口连接,即客户负责呼叫。因此服务器必须建立一个等待接受客户套接字的服务器套接字。Java中有一个专门用来建立Socket服务器的类,名叫ServerSocket,可以用服务器需要使用的端口号作为参数来创建服务器对象,用来监听网络上对某端口的请求.这个类也是包含在包中的,建立服务器套接口可能发生IOException异常,它有以下几个构造方法:,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,ServerSocket()ServerSocket(intport)ServerSocket(intport,intbacklog)ServerSocket(intport,intbacklog,InetAddressbindAddr)其中最常用的就是ServerSocket(intport)方法,它指定了Socket服务器对指定port端口的监听,port必须和客户呼叫的端口号相同。其形式是:,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,tryServerSocketserver=newServerSocket(9999);catchIOExceptione)这条语句创建了一个服务器对象server,这个服务器使用9999号端口,服务器对象server便响应这个连接,并且这个服务器对象会调用它的一个最重要的方法accept()方法来创建一个新的Socket对象.服务器端便可以利用这个Socket对象与客户进行通信.其中accept()方法是返回一个Socket对象,他也可能产生IOException异常,它的表现形式是:,面向对象程序设计Java黑龙江大学软件学院版权所有2009,16.3网络套接字,trySocketclient=server.acce

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论