《分布式计算技术》实验指导书
实验学时:16
适用专业:计算机科学与技术、计算机软件技术、网络工程等
实验一:Socket程序设计实验
【实验目的及要求】
在Uinx/Linux/Windows 环境下通过socket方式实现一个基于Client/Server 或是P2P模式的文件传输程序。 要求:要求独立完成。
【实验原理和步骤】
1. 确定传输模式:通过socket方式实现一个基于Client/Server或P2P模式的文件传输程序。
2. 如果选择的是Client/Server模式的文件传输程序,则需要分别实现客户端和服务器端程序。客户端:用面向连接的方式实现通信。采用Socket 类对象,接收服务器发送的文件并保存在特定的位置。服务器端:监听客户请求,读取磁盘文件并向客户端发送文件。注意:需要实现文件的读写操作。
3. 如果选择的是P2P模式的文件传输程序,则需要实现一个Peer程序,它即是客户端,也是服务器端。Peer程序需要实现文件上传、下载及文件读写等操作。 【实验任务】
1.提交源代码以及实验报告。
实验二:Java RMI实验
【实验目的及要求】
在Java语言环境下,通过RMI实现一个学生成绩或教师信息查询的程序。 要求:要求独立完成。
【实验原理和步骤】
1. 定义学生成绩查询或教师信息查询的远程接口
2. 实现服务器端软件(程序):设计远程接口的实现类和服务器对象类,在服务器上启动目录服务,并注册远程对象,供客户端访问。远程接口的实现类要从本地读取数据信息(成绩或教师信息),数据信息可以存储在文件或数据库中。 3. 实现客户端软件(程序):实现访问远程对象的客户程序。
【实验任务】
1.提交源代码以及实验报告。
实验三:二选一
题目1.实现一个基本的Web服务器程序 (独立完成) 【实验目的及要求】
采用Socket API知识和对HTTP协议,CGI的理解,实现一个基本的WEB服务器程序,要求服务器能成功响应客户程序发来的GET命令(传送文件),进一步实现响应POST和GET命令的CGI程序调用请求。 要求:要求独立完成。 【实验原理和步骤】 1.实验原理
(1)服务器主要监听来至客户浏览器或是客户端程序的连接请求,并且接收到客户请求后对客户请求作出响应。如果请求是静态的文本或是网页则将内容发送给客户。如果是CGI程序则服务器调用请求的CGI程序,并发送结果给客户。
(2)HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。
(3)HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为
GET 路径/文件名 HTTP/1.0
文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。
(4)Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。
在发送内容之前Web服务器首先传送一些HTTP头信息: HTTP 1.0 200 OK
WEBServer:1.0 // 服务器类型 content_type:类型 content_length:长度值
(5)响应POST和GET命令的CGI程序调用请求需要服务器执行外部程序,Java执行外部可执行程序的方法是:首先通过Runtime run = Runtime.getRuntime()返回与当前Java 应用程序相关的运行时对象;然后调用Process CGI = run.exec(ProgramName)另启一个进程来执行一个外部可执行程序。
2. Web服务器的实现步骤:
(1) 创建ServerSocket类对象,监听端口8080。这是为了区别于HTTP的标准TCP/IP端口80而取的;
(2) 等待、接受客户机连接到端口8080,得到与客户机连接的socket; (3) 创建与socket字相关联的输入流和输出流
(4) 从与socket关联的输入流instream中读取一行客户机提交的请求信息,请求信息的格式为:GET 路径/文件名 HTTP/1.0 (5) 从请求信息中获取请求类型。如果请求类型是GET,则从请求信息中获取所访问的文件名。没有HTML文件名时,则以index.html作为文件名;
(6) 如果请求文件是CGI程序存则调用它,并把结果通过socket传回给Web浏览器,
(此处只能是静态的CGI程序,因为本设计不涉及传递环境变量)然后关闭文件。否则发送错误信息给Web浏览器;
(7) 关闭与相应Web浏览器连接的socket字。 【实验任务】
1.提交源代码以及实验报告。
题目2. 开放式课题(相对需求不是很固定,可以自由发挥)
以下多个开放式课题,可以根据兴趣选择一个,由1-3人组成的小组一起完成。
课题一、实现一个WEB信息采集程序/系统
功能要求:基于HTMLParser等网络采集即时采集WEB网站的非结构数据(图片、文件等),可由用户设置采集数据的目标链接和数据源(例如采集http://g4c.laho.gov.cn/网页中的新建商品房网签数据,见网页中间的表格,数据附属在图片上),且可以由用户设置采集到的文件的命名规则、查看采集文件的下载进度等功能。
采集数据配置的参考界面:
文件采集下载的参考界面:
课题二、实现一个文件同步程序/系统
功能要求:使用socket编程实现对设置数据源的非结构数据(图片、文件等)同步功能和传输功能,即,做得比较好的话,还可以设置同步的周期,比如可以设置同步周期为即时同步(每隔10秒)、间隔多少小时、间隔多少天等。
设置同步源文件夹和目标文件的参考界面:
同步的方式参考(默认为即时同步,即每隔间隔10秒左右同步一次):
课题三、实现一个分布式主机监控系统
实验目的及要求:
该实验内容为通过socket编程技术和WEB应用开发技术实现一个分布式主机监控系统,通过服务器监控各客户主机的状态(包括系统启动、系统关机、IE启动、IE关闭),
并通过WEB网页展示主机监控功能。主机监控的功能包括监控各主机的状态、展示主机的结构关系等,系统功能界面参考如下:
实验原理和步骤: 1.实验原理
技术路线:socket+jsp+servlet,服务器与客户端使用socket通讯,服务器通过socket通讯获取客户端状态(包括系统启动、系统关机、IE启动、IE关闭),服务器监控类基于servlet实现;服务器上的展示程序基于WEB实现;客户端基本信息基于XML存储和维护。
2.实现步骤:
(1) 开发SOCKET通讯监控程序,并封装成SERVLET; (2) 搭建WEB应用框架,基于XML开发客户端主机信息管理功能(设计客户端信息XML描述文件,实现客户端信息的增删改功能);
(3) 开发主机监控系统的WEB网页,实现监控功能; (4) 部署系统; (5) 测试系统。
【实验任务】
1.提交源代码以及实验报告。