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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

分布式系统实验报告.docx

1、分布式系统实验报告中南大学 分布式系统实验报告(我选做4题,按住Ctrl点击目录条可直达,wps下有效)实验一 数据包 socket 应用 . 4一、 实验目的 . 4二、 预习与实验要求 . 4三、 实验环境 . 4四、 实验原理 . 4五、 实验内容 . 6六、实验报告 . 7七、思考题 . 7实验二 流式 soCket 应用 . 8一、实验目的 . 8二、预习与实验要求 . 8三、实验环境 . 8四、实验原理 . 8五、实验内容 . 9六、实验报告 . 9七、思考题 . 11实验三 客户 / 服务器应用开发 . 11一、实验目的 . 11二、预习与实验要求 . 11三、实验环境 . 11

2、四、实验原理 . 12五、实验内容 . 12六、实验报告 . 13实验 九 虚拟机的使用与 Linux 系统的安装 . 37、实验目的 . 37、实验内容和步骤 . 38、实验结果 . 40实验一 数据包 socket 应用一、实验目的1.理解数据包 socket 的应用2.实现数据包 socket 通信3.了解 Java 并行编程的基本方法二、预习与实验要求1.预习实验指导书及教材的有关内容,了解数据包 socket 的通信原理;2.熟悉一种 java IDE 和程序开发过程;3.了解下列 Java API : Thread 、 Runnable ;4.尽可能独立思考并完成实验。三、实验环境

3、a)独立计算机或计算机网络;b)Windows 操作系统。c)Jdk 工具包d)JCreator or others四、实验原理1.分布式计算的核心是进程通信。操作系统、网卡驱动程序等应用从不同抽象层面提供了对进程通信的支持,例如Win sock、*。 Socket API是一种作为IPC提供对系统低层抽象的机制。尽管应用人员很少需要在该层编写代码,但理解 socket API 非常重要,因为: 1,高层设施是构建于 socket或运行于有限资源平台上的应用来说, socket API可能是最适合的。在In ternet 网络协议体系结构中,传输层上有 UDP和TCP两种主要协议,UDP允许在

4、传送层使用无连接通信传送,被传输报文称为数据包。 (是否存在面向连接的数据包socket )因此数据包 socket 是基于UDP的不可靠IPC。Java为数据包socket API提供 两个类:(1) 针对 socket 的 datagramSocket 类(2) 针对数据包交换的 datagramPacket 类希望使用该API发送和接收数据的进程须实例化一个 datagramSocket 对象,每个socekt被绑定到该进程所在及其的某个 UDP端口上。为了向其他进程发送数据包,进程必须创建一个代表数据包本身的对象。该对象通过实例化一个 datagram socket 对象创建。在接收者

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

6、类实现了 Runnable接口(这个类要实现run方法)。一个类的实例可以被分配并作为参数传递给创建的线程,并启动线程。例如:创建一个类是Thread 的子类:class SomeThread exte nds Thread SomeThread() public void run() SomeThread p = new SomeThread();();创建一个实现 Ru nn able接口的类并传递给线程:class SomeR un impleme nts Runn able SomeRu n() public void run() SomeRun p = new SomeRu n(14

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

8、作为参(4)数发送。2.构建服务器端程序(1)构建 datagramSocket对象实例,指定接收的端口号。(2)DatagramPacket对象实例作为参数。六、实验报告1.客户端和服务器端程序的伪代码;客户端:import class Clie nt public static void main(String args) throws IOExceptionetBytes();r:!SflrificM Jm* 0HUF) 农虫n.MiMjiMi ( 30174MI911 冃 K K Ui” * 曰 - ” rkaiwanxiao 1*砧匸整+四rcwi z 亞冃聊 i川“严油百e 弘1

9、an_ioi .,b;jr 4.霏沪* i汕“和冃口冃上牛n;丼:魏憫尊己经戟到i KHS 9 X Jt血甬陽 J aSt .申 SI.谏了 C- PrLHJ. du T tfl.lffl1 ( zoi ffij3馆息巳经上到!如何避免数据包丢失而造成的无限等待问题答:我认为可在发包时设定一个定时器, 若发出去的包在一定时间内没有收到答应, 则再发一次。为了避免接受者接到重复的包,可以给数据包加个序号,接受者收包时查看序号即可。2.如何实现全双工的数据包通信答:利用端口套接字之间的通信功能。实验二 流式 socket 应用一、实验目的1.理解流式 socket 的原理2.实现流式 socket

10、 通信二、预习与实验要求1.预习实验指导书及教材的有关内容,了解流式 socket 的通信原理;2.熟悉 java 环境和程序开发过程;3.尽可能独立思考并完成实验。三、实验环境a)独立计算机;b)Windows 操作系统 ;c)Jdk 工具包四、实验原理Socket API 是一种作为 IPC 提供低层抽象的机制。尽管应用人员很少需要在该层编写代 码,但理解 socket API 非常重要,因为: 1,高层设施是构建于 socket API 之上的,即 他们是利用 socket API 提供的操作来实现; 2,对于以响应时间要求较高或运行于有限资源平 上的应用来说, socket API 可

11、能是最适合的。在 Internet 网络协议体系结构中,传输层上有 UDP 和 TCP 两种主要协议, UDP 允许使 用无连接通信传送, 被传输报文称为数据包。 而 TCP 则允许面向连接的可靠通信, 这种 IPC 称为流式socket 。 Java为流式socket API 提供两类socket (1)式用于连接的连接socket ( 2)式用于数据交换的数据 socket 。五、实验内容1.构建客户端程序和服务器端程序都需要的 MystreamSocket 类,定义继承自 javaSocket的 sendMessage 和 receiveMessage 方法2.构建客户端程序(1 ) 创

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

13、class MystreamSocket exte nds Socket private Socket socket;private BufferedReader in put;private Prin tWriter output;ava :import class Clie nt public static void main(String args)try In etAddress host name=(localhost);MystreamSocket mss=new MystreamSocket(host name,12345);(我是客户端,我请求连接!);(); catch (I

14、OExcepti on e) tart(); catch (IOExcepti on e) 然后利用其提供答:服务端监听端口,每当有一个连接请求发来时,就与其建立新的连接, 的功能进行通信。2.如何实现安全 socket API 答:注意在通信过程中的各种异常情况的捕获与处理。3.如何实现 1 对多的并发 答:在服务端使用多线程。实验三 客户 / 服务器应用开发一、实验目的1. 验证 daytime 和 echo 程序,2. 实现包 socket 支撑的 C/S 模式 IPC 机制3.实现流式 socket 支撑的 C/S 模式 IPC 机制二、预习与实验要求1. 预习实验指导书及教材的有关内

15、容,了解 daytime 和 echo 要提供的具体服务内容;2. 复习包 socket 和流式 socket 的实现原理;3.实验前认真听讲,服从安排。尽可能独立思考并完成实验。三、实验环境a)独立计算机;b)Windows 操作系统。c)Jdk 工具包四、实验原理C/S 模式是主要的分布式应用范型,其设计的目的是提供网络服务。网络服务指如daytime、telnet、ftp和WWV之类的允许网络用户共享资源的服务。要构建 C/S范型的应用就必须解决以下一些关键问题:(1) 如何通过会话实现多个用户的并发问题(2) 如何定义客户和服务器在服务会话期间必须遵守的协议(3) 服务定位问题(4)

16、进程间通信和事件同步问题:语法、语义和响应(5) 数据表示问题在解决了这些问题的基础上, C/S 范型必须遵从 3 层结构的软件体系结构:(1) 表示层,提供与客户端进行交互的界面(2) 应用逻辑层,定义服务器和客户端要处理的主要事务的业务逻辑(3) 服务层,定义应用逻辑层所需要的底层支持技术,例如定义其 IPC 机制里的receive 方法和 send 方法等。五、实验内容1.构建用数据包 socket 实现的 daytime 客户端程序(1) 构建表示层程序(2) 构建应用逻辑层程序(3) 构建服务层程序2.构建用数据包 socket 实现的 daytime 服务器端程序(1) 构建表示层

17、和应用逻辑层程序(2) 构建服务层程序(3) 构 建 服 务 层 程 序 所 需 要 的 下 层 程 序(它封装了客户端的消息和地址)3.构建用流式 socket 实现的 daytime 应用程序包4.构建用数据包socket 实现的echo应用程序包5.构建用流式socket实现的echo应用程序包六、实验报告1.用数据包socket实现的daytime 应用程序包的构架,列明各程序之间的关系; 客户端:DavlimcC JieniHclpcrlMyChcnt Duligram/ LSocket1-qii!1彳 DitdmmSucLctI ii Jirt 3 LVC MciMgc 0J/ 服

18、务端:代码:客户端:public class DaytimeClie nt1 public static void main( Stri ng args) In putStreamReader is = new In putStreamReader;BufferedReader br = new BufferedReader(is);try Welcome to the Daytime clie nt.n +What is the n ame of the server host);Stri ng hostName =();if () = 0)hostName = localhost; ;pu

19、blic class DaytimeClie ntHelper1 public static String getTimestamp(String hostName, String portNum)String timestamp = try InetAddress serverHost = (hostName);int serverPort = (portNum);import .*;public class MyClientDatagramSocket extends DatagramSocket static final int MAX_LEN = 100;MyClientDatagra

20、mSocket() throws SocketExceptionsuper();MyClientDatagramSocket(int portNo) throws SocketExceptionsuper(portNo);public void sendMessage(InetAddress receiverHost, int receiverPort, Stringmessage)throws IOException byte sendBuffer();DatagramPacket datagram = new DatagramPacket(sendBuffer, , receiverHos

21、t, receiverPort);(datagram);public String receiveMessage()throws IOException byte receiveBuffer = new byteMAX_LEN;DatagramPacket datagram = new DatagramPacket(receiveBuffer,MAX_LEN);(datagram);String message = new String(receiveBuffer);return message;服务端:import .*;importpublic class DaytimeServer1 p

22、ublic static void main(String args) int serverPort = 13;if = 1 )serverPort = (args0);try newMyServerDatagramSocket mySocket = MyServerDatagramSocket(serverPort);Daytime server ready.);while (true) DatagramMessage request = ();Request received);Date timestamp = new Date ();timestamp sent: + ();(),(),

23、 ();catch (Exception ex) There is a problem: + ex);import .*;import .*;public class MyServerDatagramSocket extends DatagramSocket static final int MAX_LEN = 100;MyServerDatagramSocket(int portNo) throws SocketException super(portNo);public void sendMessage(InetAddress receiverHost, int receiverPort,

24、 Stringmessage)throws IOException byte sendBuffer();DatagramPacket datagram =new DatagramPacket(sendBuffer, , receiverHost, receiverPort);(datagram);public String receiveMessage()throws IOException byte receiveBuffer = new byteMAX_LEN;DatagramPacket datagram = new DatagramPacket(receiveBuffer,MAX_LE

25、N);(datagram);String message = new String(receiveBuffer);return message;public DatagramMessage receiveMessageAndSender()throws IOException byte receiveBuffer = new byteMAX_LEN;DatagramPacket datagram = new DatagramPacket(receiveBuffer,MAX_LEN);(datagram);DatagramMessage returnVal = new DatagramMessa

26、ge();(new String(receiveBuffer), (),();return returnVal; import .*;public class DatagramMessageprivate String message;private InetAddress senderAddress;private int senderPort;public void putVal(String message, InetAddress addr, int port) = message;= addr;= port;public String getMessage() return ;pub

27、lic InetAddress getAddress() return ;public int getPort() return ;2. 用流式 socket 实现的 daytime 应用程序包的构架,列明各程序之间的关系; 客户端:DaytimrCLicntHelpd% * u /h * *MySdneamSackctI!* f4 f, !| fR. mf v ! 4 七n fl n 、 h111VL hbIh h1 V 1r *r t JTserdMeswiget)I1*L* 1i声 *J feceiveMtage ()*服务端:共有的:import .*;import .*;public

28、 class MyStreamSocket extends Socket private Socket socket;private BufferedReader input;private PrintWriter output;MyStreamSocket(InetAddress acceptorHost,int acceptorPort ) throws SocketException, IOException socket = new Socket(acceptorHost, acceptorPort ); setStreams();MyStreamSocket(Socket socke

29、t) throws IOException = socket;setStreams();private void setStreams() throws IOExceptionInputStream inStream = ();input = new BufferedReader(new InputStreamReader(inStream);OutputStream outStream = ();output = new PrintWriter(new OutputStreamWriter(outStream);public void sendMessage(String message) throws IOException (message);();public String receiveMessage() throws IOException String message = ();return message;客户端:import .*;public class Dayt

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

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