欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    分布式系统实验指导书.docx

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

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

    分布式系统实验指导书.docx

    1、分布式系统实验指导书分布式系统实验指导书闻晓计算机与信息科学学院2010年3月目 录实验一 数据包socket应用 1实验二 流式socket应用 3实验三 客户/服务器应用开发 5实验四 RMI API 7实验五 Internet 应用 9实验一 数据包socket应用 实验目的 1. 理解数据包socket的应用2. 实现数据包socket通信3. 了解Java并行编程的基本方法 预习与实验要求 1. 预习实验指导书及教材的有关内容,了解数据包socket的通信原理;2. 熟悉一种java IDE和程序开发过程;3. 了解下列Java API:Thread、Runnable;4. 实验前认

    2、真听讲,服从安排。尽可能独立思考并完成实验。 实验环境 a) 独立计算机或计算机网络;b) Windows操作系统。c) Jdk工具包d) JCreator or others 实验原理 1. 分布式计算的核心是进程通信。操作系统、网卡驱动程序等应用从不同抽象层面提供了对进程通信的支持,例如Winsock、.*。Socket API是一种作为IPC提供对系统低层抽象的机制。尽管应用人员很少需要在该层编写代码,但理解socket API非常重要,因为:1,高层设施是构建于socket API之上的,即他们是利用socket API提供的操作来实现;2,对于以响应时间要求较高或运行于有限资源平台上

    3、的应用来说,socket API可能是最适合的。在Internet网络协议体系结构中,传输层上有UDP和TCP两种主要协议,UDP允许在传送层使用无连接通信传送,被传输报文称为数据包。(是否存在面向连接的数据包socket?)因此数据包socket是基于UDP的不可靠IPC。Java为数据包socket API提供两个类:(1)针对socket的datagramSocket类(2)针对数据包交换的datagramPacket类希望使用该API发送和接收数据的进程须实例化一个datagramSocket对象,每个socekt被绑定到该进程所在及其的某个UDP端口上。为了向其他进程发送数据包,进程

    4、必须创建一个代表数据包本身的对象。该对象通过实例化一个datagram socket对象创建。在接收者进程中,datagramPacket对象也必须被实例化并绑定到一个本地端口上,该端口必须与发送者数据包的定义一致。接收进程创建一个指向字节数组的DatagramPacket,并调用datagramSocket对象的receive方法,将DatagramPacket对象指针作为参数定义。2. 并行编程(以Java为例)一个线程是比进程更小的执行粒度。 Java虚拟机允许应用程序有多个执行线程同时运行。有两种方法来创建一个新线程的执行。一个是声明一个类是一个线程的子类。这个子类应重写Thread类

    5、的run方法。一个子类的实例可以被分配和启动。另一种方法创建一个线程,并同时声明一个类实现了Runnable接口(这个类要实现run方法)。一个类的实例可以被分配并作为参数传递给创建的线程,并启动线程。例如: 创建一个类是Thread的子类:class SomeThread extends Thread SomeThread() public void run() . . . SomeThread p = new SomeThread(); p.start(); 创建一个实现Runnable接口的类并传递给线程: class SomeRun implements Runnable SomeRu

    6、n() public void run() . . . SomeRun p = new SomeRun(143); new Thread(p).start(); 当一个实现 Runnable接口的类被执行时,可以没有子类。实例化一个Thread实例,并通过自身作为目标线程。在大多数情况下,如果你只打算重写的run()方法,并没有其它的线程方法,应使用Runnable接口。因为类不应该被继承,除非程序员有意修改或增强类的基本行为。 实验内容 1. 构建客户端程序(1) 构建datagramSocket对象实例(2) 构建DatagramPacket对象实例,并包含接收者主机地址、接收端口号等信息

    7、(3) 调用datagramSocket对象实例的send方法,将DatagramPacket对象实例作为参数发送。2. 构建服务器端程序(1) 构建datagramSocket对象实例,指定接收的端口号。(2) 构建DatagramPacket对象实例,用于重组接收到的消息。(3) 调用datagramSocket对象实例大家receive方法,进行消息接收,并将DatagramPacket对象实例作为参数。 实验报告 1. 客户端和服务器端程序的伪代码;2. 试验过程中的问题和解决途径;3. 上机完成P128-P130之5、6、7三题并填写实验报告。(请参考第一章习题2) 思考题 1. 如

    8、何避免数据包丢失而造成的无限等待问题?2. 如何实现全双工的数据包通信?实验二 流式socket应用 实验目的 1. 理解流式socket的原理2. 实现流式socket通信 预习与实验要求 3. 预习实验指导书及教材的有关内容,了解流式socket的通信原理;4. 熟悉java环境和程序开发过程;5. 实验前认真听讲,服从安排。尽可能独立思考并完成实验。 实验环境 a) 独立计算机;b) Windows操作系统;c) Jdk工具包 实验原理 Socket API是一种作为IPC提供低层抽象的机制。尽管应用人员很少需要在该层编写代码,但理解socket API非常重要,因为:1,高层设施是构建

    9、于socket API之上的,即他们是利用socket API提供的操作来实现;2,对于以响应时间要求较高或运行于有限资源平台上的应用来说,socket API可能是最适合的。在Internet网络协议体系结构中,传输层上有UDP和TCP两种主要协议,UDP允许使用无连接通信传送,被传输报文称为数据包。而TCP则允许面向连接的可靠通信,这种IPC称为流式socket。Java为流式socket API提供两类socket(1)式用于连接的连接socket(2)式用于数据交换的数据socket。 实验内容 1. 构建客户端程序和服务器端程序都需要的MystreamSocket类,定义继承自jav

    10、a Socket的sendMessage和receiveMessage方法2. 构建客户端程序(1) 创建一个MyStreamsocket的实例对象,并将其指定接收服务器和端口号(2) 调用该socket的receiveMessage方法读取从服务器端获得的消息3. 构建服务器端程序(1) 构建连接socket实例,并与指定的端口号绑定,该连接socket随时侦听客户端的连接请求(2) 创建一个MyStreamsocket的实例对象(3) 调用MyStreamsocket的实例对象的sendMessage方法,进行消息反馈。 实验报告 1. 应用程序的结构图,说明程序之间的关系;2. 程序的伪

    11、代码。 思考题 1. 如何实现全双工的流式socket通信?2. 如何实现安全socket API?3. 如何实现1对多的并发?实验三 客户/服务器应用开发 实验目的 1. 验证daytime和echo程序,2. 实现包socket支撑的C/S模式IPC机制3. 实现流式socket支撑的C/S模式IPC机制预习与实验要求 1. 预习实验指导书及教材的有关内容,了解daytime和echo要提供的具体服务内容;2. 复习包socket和流式socket的实现原理;3. 实验前认真听讲,服从安排。尽可能独立思考并完成实验。 实验环境 a) 独立计算机;b) Windows操作系统。c) Jdk工

    12、具包 实验原理 C/S模式是主要的分布式应用范型,其设计的目的是提供网络服务。网络服务指如daytime、telnet、ftp和WWW之类的允许网络用户共享资源的服务。要构建C/S范型的应用就必须解决以下一些关键问题:(1) 如何通过会话实现多个用户的并发问题(2) 如何定义客户和服务器在服务会话期间必须遵守的协议(3) 服务定位问题(4) 进程间通信和事件同步问题:语法、语义和响应(5) 数据表示问题在解决了这些问题的基础上,C/S范型必须遵从3层结构的软件体系结构:(1) 表示层,提供与客户端进行交互的界面(2) 应用逻辑层,定义服务器和客户端要处理的主要事务的业务逻辑(3) 服务层,定义

    13、应用逻辑层所需要的底层支持技术,例如定义其IPC机制里的receive方法和send方法等。 实验内容 1. 构建用数据包socket实现的daytime客户端程序(1) 构建表示层程序DaytimeClient1.java(2) 构建应用逻辑层程序DaytimeHelper1.java(3) 构建服务层程序MyClientDatagramSocket.java2. 构建用数据包socket实现的daytime服务器端程序(1) 构建表示层和应用逻辑层程序DaytimeServer1.java(2) 构建服务层程序MyServerDatagramSocket.java(3) 构建服务层程序My

    14、ServerDatagramSocket.java所需要的下层程序DatagramMessage.java(它封装了客户端的消息和地址)3. 构建用流式socket实现的daytime应用程序包4. 构建用数据包socket实现的echo应用程序包5. 构建用流式socket实现的echo应用程序包 实验报告 1. 用数据包socket实现的daytime应用程序包的构架,列明各程序之间的关系;2. 用流式socket实现的daytime应用程序包的构架,列明各程序之间的关系;3. 用数据包socket实现的echo应用程序包的构架,列明各程序之间的关系;4. 用流式socket实现的echo

    15、应用程序包的构架,列明各程序之间的关系。 思考题 1. 如何实现有状态服务器的状态信息的维护?实验四 RMI API 实验目的 1. 了解Java RMI体系结构,2. 学会用RMI API开发C/S模式的应用程序预习与实验要求 1. 预习实验指导书及教材的有关内容,了解RMI技术原理;2. 实验前认真听讲,服从安排。尽可能独立思考并完成实验。 实验环境 a) 独立计算机;b) Windows操作系统。c) Jdk工具包 实验原理 RMI技术是分布式对象范型的一个实例,是RPC技术的扩展。在Java RMI体系结构中,客户及服务器都提供三层抽象。1. 客户端体系结构(1) stub层:负责解释

    16、客户程序发出的远程方法调用;然后将其转发到下一层(2) 远程引用层:解释和管理客户发出的到远程服务对象的引用,并向下一层即传输层发起IPC操作,从而将方法调用传送给远程主机(3) 传输层:基于TCP协议2. 服务器端体系结构(1) skeleton层:负责与客户端stub进行交互(2) 远程引用层:管理源于客户端的远程引用,并将其转换成能被skeleton层理解的本地引用(3) 传输层:与客户端体系结构一样,面向传输层。 实验内容 1. 开发服务器端软件(1) 为该应用的所有待生成文件创建一个目录(2) 在someInterface.java中定义远程服务器接口。编译并修改程序,直到不再有任何

    17、语法错误(3) SomeImpl.java中实现接口,编译并修改程序,直到不再有任何语法错误(4) 使用RMI编译器rmic处理实现类,生成远程对象的stub文件和skeleton文件 Rmic SomeImpl(5) 创建对象服务器程序SomeServer.java,编译并修改程序,直到不再有任何语法错误(6) 激活对象服务器 java SomeServer2. 开发客户端软件(1) 为该应用的所有待生成文件创建一个目录(2) 获取远程接口类文件的一个拷贝,使用javac编译,生成接口类文件(3) 获取接口实现stub文件SomeImpl_stub.class的一个拷贝(4) 开发客户程序S

    18、omeClient.java,编译程序,生成客户类(5) 激活客户 Java SomeClient 实验报告 1. RMI应用文件列表及放置情况2. 每个文件主要实现的功能和文件相互间的关系3. 每个文件的伪代码4. 试验运行情况和结果,在试验中遇到的问题和分析思考题 1. 如何使用RMI传递参数?2. 如何使得被动提供远程服务的服务器能够主动发起数据请求?3. 如何避免在多个客户端同时发起远程服务调用时产生不一致的情况?实验五 Internet 应用 实验目的 1. 了解基于http协议的web应用的工作原理2. 了解构建基于web的分布式应用范型的主要技术和手段 预习与实验要求 1. 预习

    19、实验指导书及教材的有关内容,了解http协议工作原理;2. 了解html和XML语言;3. 实验前认真听讲,服从安排。尽可能独立思考并完成实验。 实验环境 a) 独立计算机;b) Windows操作系统。c) Tomcatd) J2EE工具包e) J2sdk工具包 实验原理 基于http的web应用是分布式系统的另一个重要应用范型,与C/S模式不同的是B/S模式的应用没有独立的客户端软件,B/S模式中统一对服务器端响应进行解释的就只有浏览器。因为浏览器的通用性的简单性,使得B/S应用中数据传递也不可能很复杂,因此就决定了它在应用层的支持协议只能是面向文本的http协议。最初的http协议只能支

    20、持简单的静态页面(对象)的获得,但是随着网络应用的发展,提供与客户的接口,使得客户与服务器端的通信能够动态进行,并由此动态生成页面(对象)是必要的。解决这一问题的主要手段是使用表单技术。而保存与客户交互的结果也是必须的,解决的技术是cookie。 实验内容 1. 使用socket API实现简单的HTTP客户(1) 使用sendMessage方法发送符合http协议定义的消息给web服务器以获得想要的页面(2) 使用receiveMessage方法接收返回的页面源文件并显示。2. 使用隐式表单域传输会话状态数据(1) 编写客户端请求页面form.html(2) 编写form.html所触发的脚本hiddenform.c(3) 编写hiddform.cgi动态生成页面中触发的脚本hidden.form2.c3. 使用coolie传递状态数据(1) 编写请求页面cookie.html(2) 编写cookie.html所触发的脚本cookie.c(3) 编写由cookie.c动态生成页面中触发的脚本cookie2.c 实验报告 1. 列明文件清单2. 写明各文件的作用和文件间的关系3. 写出各文件的伪代码思考题 1. 考虑隐式表单域与cookie技术之间的区别2. 考虑cookie的安全性问题


    注意事项

    本文(分布式系统实验指导书.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开