当前位置:文档之家› 分布式系统导论实验报告

分布式系统导论实验报告

分布式系统导论
实验报告
实验(3)名称面向连接的流模式Socket 实验(4)名称三层C/S结构
实验人学号 1007XXX姓名 XXX 实验日期 2013年5月20日
报告完成日期 2013年5月21日
成绩指导教师签字
年月日
目录:
一、实验3面向连接的流模式Socket (2)
二、实验4三层C/S结构 (4)
2.1 任务一:通过无连接数据报socket实现C/S应用 (4)
2.2任务二:通过面向连接的流模式socket实现C/S应用 (6)
三、实验心得 (8)
一、实验3面向连接的流模式Socket
1、实验目标:尝试通过面向流模式的socket实现通信。

2、实验原理:
2.1、socket通常也称作"套接字",用于描述IP地址和端口,是一个
通信链的句柄。

应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

Socket和ServerSocket类库位于包中。

ServerSocket用于服务器端,Socket是建立网络连接时使用的。

在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。

2.2、面向连接的操作使用TCP协议.一个这个模式下的socket必须
在发送数据之前与目的地的socket取得一个连接.一旦连接建立了,sockets就可以使用一个流接口:打开-读-写-关闭.所有的发送的信息都会在另一端以同样的顺序被接收.面向连接的操作比无连接的操作效率更低,但是数据的安全性更高.
3、实验内容:
创建一个服务端的程序,以接受一个连接并用流模式socket接受一个消息。

创建一个名为客户端程序。

此程序可以请求一个连接,并使用流模式socket。

实验所用到的基本函数解释:
1)serverSocket(int port)指定的IP和端口创建一ServerSocket
对象
2)socket accept()服务端和客户端握手
3)socket(InetAddress address, int port)创建一个链接,向指定的
IP地址上指定的端口的服务器端程序发送连接请求
4)void close()关闭连接
5)inputStream getInputStream()返回当前输入流
6)outputStream getOutputStream()返回当前输出流
4、实验截图:
服务器:
客户端:
二、实验4三层C/S结构
2.1 任务一:通过无连接数据报socket实现C/S应用
1、实验目标:
尝试通过无连接数据报socket实现C/S应用,来理解C/S结构。

2、实验原理:
C/S (Client/Server)结构,即大客户机和服务器结构。

它是软件系统体系结构,它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。

实验内容:分别用无连接的数据报或面向连接的流模式两种方式将服务端产生的系统时间传递给客户端。

3、实验所用到的基本函数解释:
1)DatagramSocket():创建一套接字,绑定到本地地址和一随机的端口

2)DatagramSocket(int port, InetAddress iad):创建一个套接字,绑定到
特定的端口号及指定地址
3)DatagramPacket(byte[] buf, int length):用来接受长度为length的buf
数据(即数据存于字节数组buf中)发送类型:
4)DatagramPacket(byte[] buf, int length, InetAddress address, int port); 将length长的buf数据发送到指定的地址的端口号处
5)DatagramPacket(byte[] buf, int length, SocketAddress address);
4、实验详细设计:
4.1、客户端
(1)DaytimeClient.java 用于描述客户端的逻辑。

客户负责从用户接收输入并从DaytimeClientHelper.java处获取一个时间。

(2)DaytimeClientHelper.java用于描述客户端的应用逻辑。

负责与服务器发送和接收消息。

(3)MyClientDatagramSocket.java用于描述IPC服务的服务逻辑。

用数据报socket的API来实现。

用于具体实现消息的发送和接收。

(流模式修改IPC服务即可,因其只影响服务逻辑)
4.2、服务端
(1)服务器通常没有表示逻辑
(2)DaytimeServer.java封装服务器的应用逻辑,该模块执行时不断循环等待客户请求并为客户建立连接
(3)MyServerDatagramSocket.java 用于描述IPC的服务逻辑,使用数据报socket的API。

负责具体的发送和接收消息。

(流模式修改IPC服务即可,因其只影响服务逻辑)
(4)DatagramMessage.java用于保存数据报信息
5、实验截图
服务器:
客户端:
2.2任务二:通过面向连接的流模式socket实现C/S应用1、实验目标:
尝试通过面向连接的流模式socket实现C/S应用,来理解C/S结构。

2、实验原理:
2.1 、socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。

应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

Socket和ServerSocket类库位于包中。

ServerSocket用于服务器端,Socket是建立网络连接时使用的。

在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。

2.2 、面向连接的操作使用TCP协议.一个这个模式下的socket 必须在发送数据之前与目的地的socket取得一个连接.一旦连接建立了,sockets就可以使用一个流接口:打开-读-写-关闭.所有的发送的信息都会在另一端以同样的顺序被接收.面向连接的操作比无连接的操作效率更低,但是数据的安全性更高.
3、实验内容:
3.1客户端:
(1)DaytimeClient.java用于描述客户端的逻辑。

客户负责从用接收输入并从DaytimeClientHelper.java处获取一个时间。

(2)DaytimeClientHelper.java用于描述客户端的应用逻辑。

负责与服务器发送和接收消息。

3.2服务器:
(1)DaytimeServer.java封装服务器的应用逻辑,该模块执行时不断循环等待客户请求并为客户建立连接。

(2)MyStreamSocket.java用于服务器端创建socket 与客户端socket 连接。

4、实验截图:
服务器:
客户端:
三、实验心得:
在本次实验中,加深了java网络编程课上和分布式系统课所学知识的理解,学到了很多实践中的知识。

在实验过程中,更容易记忆和深入理解各种协议的工作以及在网络编程中应该注意的一系列问题。

尤其是对java的socket编程有了很大的提高,同时对分布式系统这一概念有了进一步的认识,对C/S模型有了初步的了解,虽然实验中遇到了一些困难,但是在同学的帮助下最终还是解决了。

相关主题