欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Java 2实用教程第4版_第13章_Java网络编程.ppt

    • 资源ID:70019293       资源大小:591.50KB        全文页数:25页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java 2实用教程第4版_第13章_Java网络编程.ppt

    注意:开始用功了注意:开始用功了!第 页Java2实用教程实用教程(第第4版版)第第13章章配合例子源代码一起使用例子源代码一起使用Power point 制作:耿祥义 张跃平JavaJava网络编程网络编程 第 页导读导读主要内容主要内容URL类类InetAdress类类套接字套接字UDP数据报数据报广播数据报广播数据报Java远程调用远程调用(RMI)第 页13.1 URLURL类类 URLURL类类是是包包中中的的一一个个重重要要的的类类,URLURL的的实实例例封封装装着着一一个个统统一一资资源源定定位位符符(Uniform Uniform Resource Resource Locator)Locator),使使用用URLURL创创建建对对象象的的应应用用程程序序称称作作客客户户端端程序。程序。一一个个URLURL对对象象通通常常包包含含最最基基本本的的三三部部分分信信息息:协协议议、地址、资源。地址、资源。第 页13.1.1 URLURL的构造方法的构造方法 URL类通常使用如下的构造方法创建一个类通常使用如下的构造方法创建一个URL对象:对象:public URL(String spec)throws MalformedURLException public URL(String protocol,String host,String file)throws MalformedURLException 第 页13.1.2 读取读取URLURL中的资源中的资源 URL对象调用对象调用 InputStream openStream()方方法法可可以以返返回回一一个个输输入入流流,该该输输入入流流指指向向URL对对象象所所包包含含的的资资源源。通通过过该该输入流可以将服务器上的资源读入到客户端。输入流可以将服务器上的资源读入到客户端。例子例子1(Example13_1.java,Look.java)用户在命令行窗用户在命令行窗口输入网址,读取服务器上口输入网址,读取服务器上的资源的资源.运行效果如图运行效果如图13.1.第 页13.2 InetAdressInetAdress类类 13.2.1 地址的表示地址的表示 InternetInternet上的主机有两种方式表示地址:上的主机有两种方式表示地址:1 1域名域名 例如例如 2 2IPIP地址地址 例如例如 202.108.35.210202.108.35.210 包包中中的的InetAddressInetAddress类类对对象象含含有有一一个个InternetInternet主主机机地地址址的域名和的域名和IPIP地址,地址,例如例如 页13.2.2 获取地址获取地址 1获取获取Internet上主机的地址上主机的地址可以使用可以使用InetAddress类类的静态方法的静态方法getByName(String s);获获得得一一个个InetAddress对对象象,该该对对象象含含有有主主机机地地址址的的域域名名和和IP地址,该对象用如下格式表示它包含的信息:地址,该对象用如下格式表示它包含的信息: 2获取本地机的地址获取本地机的地址我我们们可可以以使使用用InetAddress类类的的静静态态方方法法getLocalHost()获获得得一一个个InetAddress对象对象,该对象含有本地机的域名和该对象含有本地机的域名和IP地址。地址。例子例子2 第 页13.3 套接字套接字 13.3.1 套接字套接字 IPIP地地址址标标识识InternetInternet上上的的计计算算机机,端端口口号号标标识识正正在在计计算算机机上上运运行行的的进进程程(程程序序)。端端口口号号被被规规定定为为一一个个1616位位的的0 06553565535之之间间的的整数。整数。当当两两个个程程序序需需要要通通信信时时,它它们们可可以以通通过过使使用用SocketSocket类类建建立立套套接接字字对对象象并并连连接接在在一一起起(端端口口号号与与IPIP地地址址的的组组合合得得出出一一个个网网络络套套接字)。接字)。第 页13.3.2 客户端套接字客户端套接字 客客户户端端的的程程序序使使用用Socket类类建建立立负负责责连连接接到到服服务务器器的的套套接接字字对象。对象。建立连接到服务器的套接字对象:建立连接到服务器的套接字对象:try Socket mysocket=new Socket(“http:/192.168.0.78”,1880);catch(IOException e)与与mysocket相关的方法相关的方法 getInputStream()获得一个输入流获得一个输入流 getOutputStream()获得一个输出流获得一个输出流 用用getInputStream()得到的输入流接到另一个得到的输入流接到另一个DataInputStreamDataInputStream数据流上数据流上 用用getOutputStream()得到的输出流接到另一个得到的输出流接到另一个DataOutputStream数据流上数据流上 第 页13.3.3 ServerSocketServerSocket对象与服务器端套接字对象与服务器端套接字_1 _1 服服务务器器必必须须建建立立一一个个ServerSocketServerSocket对对象象,该该对对象象通通过过将将客客户户端端的的套套接接字字对对象象和和服服务务器器端端的的一一个个套套接接字字对对象象连连接接起起来来,从从而达到连接的目的。而达到连接的目的。建立建立ServerSocketServerSocket对象:对象:try ServerSocket serverForClient=new ServerSocket(2010);catch(IOException e)使使用用方方法法accept()accept()将将客客户户的的套套接接字字和和服服务务器器端端的的套套接接字字连连接接起来,代码如下所示起来,代码如下所示:try Socket sc=serverForClient.accept();catch(IOException e)所所谓谓“接接收收”客客户户的的套套接接字字连连接接就就是是accept()accept()方方法法会会返返回回一一个和客户端个和客户端SocketSocket对象相连接的对象相连接的SocketSocket对象。对象。第 页13.3.3 ServerSocketServerSocket对象与服务器端套接字对象与服务器端套接字_2 _2 客户端的套接字获得的输入输出流和服务器端的套接字获得的输出输入流互相连接.第 页 例例子子3中,客户端向服务器问了三句话,服务器都给出了一一的回答。首先将例子3中服务器端的Server.java编译通过,并运行起来,等待客户的呼叫,然后运行客户端程序。客户端运行效果如图13.3,服务器端运行效果如图13.4。客户端客户端(Client.java)服务器端服务器端(Server.java)第 页13.3.4 使用多线程技术使用多线程技术 为为了了防防止止堵堵塞塞线线程程,服服务务器器端端收收到到一一个个客客户户的的套套接接字字后后,就就应该启动一个专门为该客户服务的线程。应该启动一个专门为该客户服务的线程。在在下下面面的的例例子子4中中,客客户户使使用用SocketSocket类类不不带带参参数数的的构构造造方方法法SocketSocket()()创建一个套接字对象,该对象需调用创建一个套接字对象,该对象需调用 public void public void connect(SocketAddressconnect(SocketAddress endpoint)throws endpoint)throws IOExceptionIOException请求和参数请求和参数SocketAddressSocketAddress指定地址的套接字建立连接。指定地址的套接字建立连接。为为了了使使用用connectconnect方方法法,可可以以使使用用SocketAddressSocketAddress的的子子类类InetSocketAddressInetSocketAddress创创建建一一个个对对象象,InetSocketAddressInetSocketAddress的构造方法是:的构造方法是:InetSocketAddress(InetAddressInetSocketAddress(InetAddress addraddr,intint port)port)第 页 例子例子4中,客户输入圆的半径并发送给服务器,服务器把计算出的圆的面积返回给客户。因此可以将计算量大的工作放在服务器端,客户负责计算量小的工作,实现客户-服务器交互计算,来完成某项任务。首先将例子首先将例子4中服中服务器端的程序编译通过务器端的程序编译通过,并运行起来,等待客户的呼叫。客户端运行效果如图13.6,服务器端运行效果如图13.7。客户端客户端(Client.java,Read.java)服务器端服务器端(Server.javaServer.java )第 页13.4 UDPUDP数数 据据 报报 基基于于UDPUDP的的通通信信和和基基于于TCPTCP的的通通信信不不同同,基基于于UDPUDP的的信息传递更快,但不提供可靠性保证。信息传递更快,但不提供可靠性保证。基于基于UDPUDP通信的基本模式是:通信的基本模式是:1 1将将数数据据打打包包,称称为为数数据据包包(好好比比将将信信件件装装入入信信封一样),然后将数据包发往目的地。封一样),然后将数据包发往目的地。2 2接接受受别别人人发发来来的的数数据据包包(好好比比接接收收信信封封一一样样),然后查看数据包中的内容。然后查看数据包中的内容。第 页13.4.1 发送数据包发送数据包 1 1.用用 DatagramPacketDatagramPacket类类 将将 数数 据据 打打 包包,即即 用用DatagramPacketDatagramPacket类类创创建建一一个个对对象象,称称为为数数据据包包。用用DatagramPacketDatagramPacket的的以以下下两两个个构构造造方方法法创创建建待待发发送送的的数数据据包:包:DatagramPacket(byteDatagramPacket(byte data,intdata,int length,InetAddtresslength,InetAddtress address,intaddress,int port)port)DatagramPack(byteDatagramPack(byte data,intdata,int offset,intoffset,int length,InetAddtresslength,InetAddtress address,intaddress,int port)port)2 2 用用 DatagramSocketDatagramSocket类类 的的 不不 带带 参参 数数 的的 构构 造造 方方 法法:DatagramSocketDatagramSocket()()创建一个对象,该对象负责发送数据包。例如:创建一个对象,该对象负责发送数据包。例如:DatagramSocketDatagramSocket mail_out=new mail_out=new DatagramSocketDatagramSocket();();mail_out.send(data_pack);mail_out.send(data_pack);第 页13.4.2 接收数据包接收数据包 1 1.首首 先先 用用 DatagramSocketDatagramSocket的的 另另 一一 个个 构构 造造 方方 法法DatagramSocket(intDatagramSocket(int port)port)创创建建一一个个对对象象,其其中中的的参参数数必必须须和和待待接接收收的的数数据据包包的的端端口口号号相相同同。例例如如,如如果果发发送送方方发发送送的的数数据据包包的的端口是端口是5666,5666,那么如下创建那么如下创建DatagramSocketDatagramSocket对象对象:DatagramSocketDatagramSocket mail_in=new DatagramSocket(5666);mail_in=new DatagramSocket(5666);2 2.然然后后对对象象mail_inmail_in使使用用方方法法receive(DatagramPacketreceive(DatagramPacket pack)pack)接接受受数数据据包。包。3.3.用用 DatagramPackDatagramPack类类的的另另外外一一个个构构造造方方法法:DatagramPack(byteDatagramPack(byte data,intdata,int length)length)创建一个数据包,用于接收数据包,例如创建一个数据包,用于接收数据包,例如:byte data=new byte100;byte data=new byte100;intint length=90;length=90;DatagramPacketDatagramPacket pack=new pack=new DatagramPacket(data,lengthDatagramPacket(data,length););mail_in.receive(packmail_in.receive(pack););该数据包该数据包packpack将接收长度是将接收长度是lengthlength字节的数据放入字节的数据放入datadata。第 页 例子例子5中:张山和李四使用用户数据报(可用本地机模拟)互相发送和接收数据包,程序运行时“张三”所在主机在命令行输入数据发送给“李四”所在主机,将接收到的数据显示在命令行的右侧(效果如图13.8);同样,“李四”所在主机在命令行输入数据发送给“张三”所在主机,将接收到的数据显示在命令行的右侧(效果如图13.9)。“张三张三”主机主机(ZhanSan.java,ReceiveLetterForZhang.java)“李四李四”主机主机(LiSi.java,ReceiveLetterForLi.java)第 页13.5 广播数据报广播数据报 广播数据报涉及到地址和端口。广播数据报涉及到地址和端口。广广播播数数据据报报是是一一种种较较新新的的技技术术,要要广广播播或或接接收收广广播播的的主主机机都都必必须须加加入入到到同同一个一个D D类地址。类地址。广播端广播端(BroadCast.java)例子例子6 6中,一个主机不断地重复广播放假通知中,一个主机不断地重复广播放假通知,加入到同一组的主机都可加入到同一组的主机都可以随时接收广播的信息以随时接收广播的信息.接收端接收端(Receiver.java)第 页13.6 Java Java 远程调用(远程调用(RMIRMI)JavaJava远远程程调调用用,RMIRMI(Remote Remote Method Method InvocationInvocation)是是一一种种分分布布式式技技术术,使使用用RMIRMI可可以以让让一一个个虚虚拟拟机机(JVM)JVM)上上的的应应用用程程序序请请求求调调用用位位于于网网络络上上另另一一处处的的JVMJVM上上的的对对象象方方法法。习习惯惯上上称称发发出出调调用用请请求求的的虚虚拟拟机机(JVMJVM)为为(本本地地)客客户户机机,称称接接受受并并执执行行请请求求的的虚虚拟拟机机(JVMJVM)为为(远远程)服程)服务务器。器。第 页13.6.1 远程对象及其代理远程对象及其代理 1.1.远远程程对对象象:驻驻留留在在(远远程程)服服务务器器上上的的对对象象是是客客户户要要请请求求的的对对象象,称称作作远远程程对对象象。2 2代理与存根代理与存根(Stub)Stub):代理的特点是它与代理的特点是它与远远程程对对象象实现了相同的接口。实现了相同的接口。存存根根(StubStub):一一种种特特殊殊的的字字节节码码,并并让让这这个个存存根根产产生生的的对对象象为为作作为为远远程程对对象的代理。象的代理。3Remote接口接口 RMI为为了了标标识识一一个个对对象象是是远远程程对对象象,即即可可以以被被客客户户请请求求的的对对象象,要要求求远远程程对对象象必必须须实实现现java.rmi包包中中的的Remote接接口口,也也就就是是说说只只有有实实现现该该接接口口的的类类的的实实例才被例才被RMI认为是一个远程对象。认为是一个远程对象。第 页13.6.2 RMIRMI的设计细节的设计细节 1 1扩扩展展RemoteRemote接口接口 定义一个接口是定义一个接口是java.java.rmirmi包中包中RemoteRemote的子接口,即扩展的子接口,即扩展RemoteRemote接口。接口。RemoteSubjectRemoteSubject.java.java 2 2远远程程对对象象 创创建建远远程程对对象象的的类类必必须须要要实实现现RemoteRemote接接口口,RMIRMI使使用用RemoteRemote接接口口来来标标识识远远程程对对象象,但但是是RemoteRemote中中没没有有方方法法,因因此此创创建建远远程程对对象象的的类类需需要要实实现现RemoteRemote接接口的一个子接口。口的一个子接口。RemoteConcreteSubjectRemoteConcreteSubject.java.java 3 3存根(存根(StubStub)与代理与代理:RMIRMI使用使用rmicrmic命令生成存根命令生成存根 RemoteConcreteSubjectRemoteConcreteSubject_Stub.class_Stub.class 4 4启动注册启动注册rmiregistryrmiregistry:执行执行rimregistryrimregistry命令命令 5 5启启动动远远程程对对象象服服务务:远远程程服服务务器器使使用用java.java.rmirmi包包中中的的NamingNaming类类调调用用其其类类方方法法rebind(String rebind(String name,name,Remote Remote objobj)绑绑定定一一个个远远程程对对象象到到rmiregistryrmiregistry所所管管理理的的注注册册表表中中,该该方方法法的的namename参参数数是是URLURL格格式式,objobj参参数数是是远远程程对对象象,将将来来客客户端的代理会通过户端的代理会通过name name 找到远程对象找到远程对象objobj。BindRemoteObjectBindRemoteObject.java.java 6 6运运行行客客户户端端程程序序:远远程程服服务务器器启启动动远远程程对对象象服服务务后后,客客户户端端就就可可以以运运行行有有关程序,访问使用远程对象。关程序,访问使用远程对象。ClientApplicationClientApplication.java.java 第 页13.7 应用举例应用举例 查查询询服服务务器器上上数数据据库库表表的记录是最常见网络应用程序,本节利用套接字技术实现应用程序中对数据库的访问。应用程序只是利用套接字连接向服务器发送一个查询的条件,而服务器负责对数据库的查询,然后服务器再将查询的结果利用建立的套接字返回给客户端。将例子7中的服务器端代码编译通过,并运行起来,如图13.17所示。客户端输入车号或车名查询效果如图13.18 服务器端服务器端 Server.java,Target.java 客户端客户端(Client.javaClient.java )第 页第 页

    注意事项

    本文(Java 2实用教程第4版_第13章_Java网络编程.ppt)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开