Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第14章_Java网络编程

上传人:E**** 文档编号:89400066 上传时间:2019-05-24 格式:PPT 页数:27 大小:998KB
返回 下载 相关 举报
Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第14章_Java网络编程_第1页
第1页 / 共27页
Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第14章_Java网络编程_第2页
第2页 / 共27页
Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第14章_Java网络编程_第3页
第3页 / 共27页
Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第14章_Java网络编程_第4页
第4页 / 共27页
Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第14章_Java网络编程_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第14章_Java网络编程》由会员分享,可在线阅读,更多相关《Java程序设计实用教程 教学课件 PPT 作者 耿祥义 张跃平 Java程序设计实用教程_第14章_Java网络编程(27页珍藏版)》请在金锄头文库上搜索。

1、2019/5/24,1,注意:开始用功了!,2019/5/24,2,Java程序设计实用教程 第14章,配合例子源代码一起使用,Power point 制作:耿祥义 张跃平,Java网络编程,2019/5/24,3,导 读,2019/5/24,4,14.1 URL类,URL类是包中的一个重要的类,URL的实例封装着一个统一资源定位符(Uniform Resource Locator),使用URL创建对象的应用程序称作客户端程序。 一个URL对象通常包含最基本的三部分信息:协议、地址、资源。,2019/5/24,5,14.1.1 URL的构造方法,URL类通常使用如下的构造方法创建一个URL对象

2、: public URL(String spec) throws MalformedURLException public URL(String protocol, String host,String file) throws MalformedURLException 该构造方法使用字符串初始化一个URL对象,例如: try url=new URL(“http:/“); catch(MalformedURLException e) System.out.println (“Bad URL:“+url); ,2019/5/24,6,14.1.2 读取URL中的资源,URL对象调用 Input

3、Stream openStream() 方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源读入到客户端。 例14-1 Example14_1.java , Look.java,2019/5/24,7,14.2 InetAdress类 14.2.1 地址的表示,Internet上的主机有两种方式表示地址: 1域名 例如 2IP地址 例如 202.108.35.210 包中的InetAddress类对象含有一个Internet主机地址的域名和IP地址,例如 。,2019/5/24,8,14.2.2 获取地址,1获取Internet上主机的地址 可以使用

4、InetAddress类的静态方法getByName(String s); 获得一个InetAddress对象,该对象含有主机地址的域名和IP地址,该对象用如下格式表示它包含的信息: 例14-2 Example14_2.java 2获取本地机的地址 我们可以使用InetAddress类的静态方法getLocalHost()获得一个InetAddress对象,该对象含有本地机的域名和IP地址。,2019/5/24,9,14.3 套接字 14.3.1 套接字,IP地址标识Internet上的计算机,端口号标识正在计算机上运行的进程(程序)。端口号被规定为一个16位的065535之间的整数。 当两

5、个程序需要通信时,它们可以通过使用Socket类建立套接字对象并连接在一起(端口号与IP地址的组合得出一个网络套接字)。,2019/5/24,10,14.3.2 客户端套接字, 客户端的程序使用Socket类建立负责连接到服务器的套接字对象。 建立连接到服务器的套接字对象: try Socket mysocket=new Socket(“http:/192.168.0.78“,2010); catch(IOException e) 与mysocket相关方法 getInputStream()获得一个输入流 getOutputStream()获得一个输出流 用getInputStream()得到

6、的输入流接到另一个DataInputStream数据流上 用getOutputStream()得到的输出流接到另一个DataOutputStream数据流上,2019/5/24,11,14.3.3 ServerSocket对象与服务器端套接字, 服务器必须建立一个ServerSocket对象,该对象通过将客户端的套接字对象和服务器端的一个套接字对象连接起来,从而达到连接的目的。 建立ServerSocket对象: try ServerSocket serverForClient =new ServerSocket(2010); catch(IOException e) 使用方法accept()

7、将客户的套接字和服务器端的套接字连接起来,代码如下所示: try Socket sc= serverForClient .accept(); catch(IOException e) 所谓“接收”客户的套接字连接就是accept()方法会返回一个和客户端Socket对象相连接的Socket对象。,2019/5/24,12,图14.2 套接字连接示意图,2019/5/24,13,例14-3,1客户端 Client.java,2服务器端 Server.java,2019/5/24,14,14.3.4 使用多线程技术, 为了防止堵塞线程,服务器端收到一个客户的套接字后,就应该启动一个专门为该客户服务

8、的线程。 在下面的例子中,客户使用Socket类不带参数的构造方法Socket()创建一个套接字对象,该对象需调用 public void connect(SocketAddress endpoint) throws IOException 请求和参数SocketAddress指定地址的套接字建立连接。,为了使用connect方法,可以使用SocketAddress的子类InetSocketAddress创建一个对象,InetSocketAddress的构造方法是: public InetSocketAddress(InetAddress addr, int port),2019/5/24,1

9、5,图14.5 具有多线程的服务器端程序,2019/5/24,16,例14-4,1客户端 Client.java Read.java,2服务器端 Server.java,2019/5/24,17,14.4 UDP数 据 报,基于UDP的通信和基于TCP的通信不同,基于UDP的信息传递更快,但不提供可靠性保证。 基于UDP通信的基本模式是: 1将数据打包,称为数据包(好比将信件装入信封一样),然后将数据包发往目的地。 2接受别人发来的数据包(好比接收信封一样),然后查看数据包中的内容。,2019/5/24,18,14.4.1 发送数据包,1.用DatagramPacket类将数据打包,即用Dat

10、agramPacket类创建一个对象,称为数据包。用DatagramPacket的以下两个构造方法创建待发送的数据包: DatagramPacket(byte data,int length,InetAddtress address,int port) DatagramPack(byte data,int offset,int length, InetAddtress address,int port) 2用DatagramSocket类的不带参数的构造方法:DatagramSocket()创建一个对象,该对象负责发送数据包。例如: DatagramSocket mail_out=new Da

11、tagramSocket(); mail_out.send(data_pack);,2019/5/24,19,14.4.2 接收数据包,1. 首先用DatagramSocket的另一个构造方法DatagramSocket(int port) 创建一个对象,其中的参数必须和待接收的数据包的端口号相同。例如,如果发送方发送的数据包的端口是5666,那么如下创建DatagramSocket对象: DatagramSocket mail_in=new DatagramSocket(5666); 2. 然后对象mail_in使用方法receive(DatagramPacket pack)接受数据包。 3

12、.用 DatagramPack类的另外一个构造方法:DatagramPack(byte data,int length)创建一个数据包,用于接收数据包,例如: byte data=new byte100; int length=90; DatagramPacket pack=new DatagramPacket(data,length); mail_in.receive(pack); 该数据包pack将接收长度是length字节的数据放入data。,2019/5/24,20,例14-5,1“张三”主机 ZhanSan.java ReceiveLetterForZhang.java,2“李四”主

13、机 LiSi.java ReceiveLetterForLi.java,2019/5/24,21,14.5 广播数据报,广播数据报涉及到地址和端口。 广播数据报是一种较新的技术,要广播或接收广播的主机都必须加入到同一个D类地址。 例14-6,1广播端 BroadCast.java,2接收端 Receiver.java,2019/5/24,22,14.6 Java 远程调用(RMI),Java远程调用,RMI(Remote Method Invocation)是一种分布式技术,使用RMI可以让一个虚拟机(JVM)上的应用程序请求调用位于网络上另一处的JVM上的对象方法。习惯上称发出调用请求的虚拟

14、机(JVM)为(本地)客户机,称接受并执行请求的虚拟机(JVM)为(远程)服务器。,2019/5/24,23,14.6.1 远程对象及其代理,1.远程对象:驻留在(远程)服务器上的对象是客户要请求的对象,称作远程对象。 2代理与存根(Stub): 代理的特点是它与远程对象实现了相同的接口。 存根(Stub):一种特殊的字节码,并让这个存根产生的对象为作为远程对象的代理。,3Remote接口 RMI为了标识一个对象是远程对象,即可以被客户请求的对象,要求远程对象必须实现java.rmi包中的Remote接口,也就是说只有实现该接口的类的实例才被RMI认为是一个远程对象。,2019/5/24,24

15、,图14.12 远程代理与远程对象,2019/5/24,25,14.6.2 RMI的设计细节_1,1扩展Remote接口 定义一个接口是java.rmi包中Remote的子接口,即扩展Remote接口。 RemoteSubject.java 2远程对象 创建远程对象的类必须要实现Remote接口,RMI使用Remote接口来标识远程对象,但是Remote中没有方法,因此创建远程对象的类需要实现Remote接口的一个子接口。,RemoteConcreteSubject.java 3存根(Stub)与代理:RMI使用rmic命令生成存根 RemoteConcreteSubject_Stub.class 4启动注册rmiregistry: 执行rimregistry命令,2019/5/24,26,14.6.2 RMI的设计细节_2,5启动远程对象服务:远程服务器使用java.rmi包中的Naming类调用其类方法rebind(String name, Remote obj)绑定一个远程对象到rmiregistry所管理的注册表中,该方法的name参数是URL格式,obj参数是远程对象,将来客户端的代理会通过name 找到远程对象obj。 BindRemoteObject.java,6运行客户端程序:远程服务器启动远程对象服务后,客户端

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号