用java实现基于socket的分布计算

用java实现基于socket的分布计算

ID:14700399

大小:245.50 KB

页数:19页

时间:2018-07-30

用java实现基于socket的分布计算_第1页
用java实现基于socket的分布计算_第2页
用java实现基于socket的分布计算_第3页
用java实现基于socket的分布计算_第4页
用java实现基于socket的分布计算_第5页
资源描述:

《用java实现基于socket的分布计算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、并行计算课程设计用JAVA实现基于Socket的分布计算求解N*N的矩阵乘法问题1概述1.1题目要求假设需求计算两个很大的矩阵之间的相乘,而且有多台计算机处于WAN中并使用TCP/IP进行通信。编写一个通过用分布式计算的方式来求解矩阵乘法问题。1.2解决方法及结论题目要求使用一台计算机运行客户程序、几台计算机运行服务程序求解N*N矩阵得乘法问题,在这种分布模型下,一个并行应用很容易使用客户/服务模式来设计。运行客户程序的机器称为客户机,运行服务程序的计算机称为服务器。一个客户机可以将一个大的应用分成若干个小

2、的问题,这些小的问题可以由多个服务器同时处理,所以服务器对应问题求得解后,再发送给客户机。客户机汇集所有从服务程序发来的结果,然后再输出给用户,这就实现了分布并行计算的过程。在具体实现该模型的过程中,需要将多个可用服务器和其Internet域名保存在一个文件中,该文件称为服务器配置文件,由客户程序存取它。客户程序同时还要读取另一个文件,称为客户配置文件。它包括用户定义的应用参数。这种用“管理者/工作者”模式实现的C/S结构如图1.1所示。图1.1用“管理者/工作者”模式实现的C/S结构完成这一分布计算的步骤

3、可以这样来实现:首先,设置一个服务器来配置文件“srvcfg.txt”,客户程序通过这个文件获取了所有的服务器必要的信息,如服务器的个数、IP地址或主机名。然后,建立与所有服务的Socket连接和I/O流。客户程序从“clicfg.txt”19并行计算课程设计文件获得矩阵维数N的值,再创建A、B、C三个矩阵,并输入矩阵A、B的值。接着在客户端对任务进行分解,并向每个工作者节点发送一个子任务,即矩阵A乘以矩阵B的一个子块。任务要求每个服务程序收到该请求后,完成计算并把结果返回客户。而客户等待服务的回答,并将计

4、算结果拼接起来,组成矩阵C。最后,客户将得到的结果矩阵C返回给客户。1问题和实现机制实现“客户/服务”模式有多种方式,在Java中可以使用远程调用(RMI)、Socket连接和Agent来实现,本程序使用Socket实现“客户/服务”模式。另外,在使用Socket实现“客户/服务”模式时要用到流、文件读写的类和多线程技术等。2.1I/O流与SocketJava采用流的概念来传输数据。流式输入输出是一种很常见的输入输出方式,它是一阁比文件所包含的范围更广的概念。流是一个流动的数据序列。流可分为输入流和输出流。

5、输入流将外部数据引入到计算机中,输入流通数据源相连,用来从数据源中读取数据。例如,从网络中读取信息、从扫描仪中读取图像信息等。输出流将数据引导到外部设备。例如,向网络中发送信息、在屏幕上显示图像和文件内容等。流的最大特点是数据的获取和发送均按照数据序列顺序进行:每一个数据都必须等待排在它面前的数据读入或送出之后才能被读写,而不能随意的选择输入输出的位置。磁带机是实现流式输入输出的较典型设备。可以将“流”看做是数据从一种设备流向另一种设备的过程,也可以看做是一个相连的字节块。从概念上讲,流的一端可以和数据源或

6、数据接收器相连,另一端可以认为与java.io包中的类相连。Socket类用于网络上进行通信,这种通信往往要借助Java的I/O流。发送方的数据源和接收器都可以指网络的另一端,但要进行数据交换必须首先建立起某种连接,这种连接必须依靠Socket完成。在网络的两个节点之间利用Socket与ServerSocket建立连接。2.1.1基本I/O流Java.io包提供了各种流类来处理输入输出。这些类能够非常灵活地向“规则的”文件中保存数据或从中读取数据,网络数据的传输也能够用这些概念来完成。流是java.io包中

7、几乎所有类的基础,这个包有大量的类。InputStream类是以字节为单位的输入流。数据来源可以是键盘,也可以是诸如Internet这样的网络环境。该类可作为许多输入类的基类。InputStream是一个抽象类,因此不能建立它的实例,相反用户必须使用其子类。OutputStream是与InputStream相对应的输出流类,它具有所有输出流的基本功能。通过DataOutputStream类向输出流中写入一个Java的基本数据类型,所写数据的方式是可移植的,即与具体操作系统无关。它们能用DataInputSt

8、ream类读取。在使用这个类之前,必须创建一个OutputStream对象作为一个DataInputStream类的构造函数的输入参数。DataInputStream类以与机器无关的方式从一个输入流中读Java的基本数据类型,所读数据应是由DataInputStream对象所写入的。FileOutputStream类是从OutputStream类所派生出来的简单输出类,它可以简单地向文件中写入数据。我们能用Fil

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。