分布式实验报告.docx
- 文档编号:25327281
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:7
- 大小:44.17KB
分布式实验报告.docx
《分布式实验报告.docx》由会员分享,可在线阅读,更多相关《分布式实验报告.docx(7页珍藏版)》请在冰豆网上搜索。
分布式实验报告
分布式实验报告
华南理工大学
《分布式计算技术》课程实验报告
实验题目:
___Socket程序设计____________
姓名:
_____________学号:
________________
班级:
______________组别:
________
合作者:
_____________
指导教师:
__________
实验概述
【实验目的及要求】
1.在Uinx/Linux/Windows环境下通过socket方式实现一个基于Client/Server或是P2P模式的文件传输程序。
【实验原理】
1.确定传输模式:
通过socket方式实现一个基于Client/Server模式的文件传输程序。
2.客户端:
用面向连接的方式实现通信。
采用Socket类对象,接收服务器发送的文件并保存在特定的位置。
3.服务器端:
监听客户请求,读取磁盘文件并向客户端发送文件。
【实验环境】
Windows环境,jdk1.6
实验过程(设计过程与程序演示)
【实验方案设计】
try{
try{
server=newServerSocket(PORT);
while(true){
System.out.println("----正在等待客户请求连接----");
client=server.accept();
System.out.println("----连接成功----");
dis=newDataInputStream(client.getInputStream());
//文件名和长度
StringfileName=dis.readUTF();
longfileLength=dis.readLong();
fos=newFileOutputStream(newFile("E:
/"+fileName));
byte[]sendBytes=newbyte[1024];
inttransLen=0;
System.out.println("----开始接收文件<"+fileName+">,文件大小为<"+fileLength+">----");
while(true){
intread=0;
read=dis.read(sendBytes);
if(read==-1)
break;
transLen+=read;
if(s==0)
System.out.println("接收文件进度"+100*transLen/fileLength+"%...");
s=(s+1)%100;
fos.write(sendBytes,0,read);
fos.flush();
}
System.out.println("----接收文件<"+fileName+">成功-------");
client.close();
}
}catch(Exceptione){
e.printStackTrace();
}finally{
if(dis!
=null)
dis.close();
if(fos!
=null)
fos.close();
server.close();
}
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args)throwsException{
newHelloServer();
}
}
客户端
importjava.io.BufferedReader;
importjava.io.DataOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.InputStreamReader;
import.Socket;
/**
*客户端
*/
publicclassHelloClientextendsSocket{
privatestaticfinalStringSERVER_IP="127.0.0.1";
privatestaticfinalintSERVER_PORT=2014;
privateSocketclient;
privateFileInputStreamfis;
privateDataOutputStreamdos;
publicHelloClient(){
try{
try{
client=newSocket(SERVER_IP,SERVER_PORT);
//向服务端传送文件
BufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in));
System.out.println("----连接成功----");
System.out.println("----请输入需要传输的文件路径名----");
StringfileName=strin.readLine();
Filefile=newFile(fileName);
fis=newFileInputStream(file);
dos=newDataOutputStream(client.getOutputStream());
//文件名和长度
dos.writeUTF(file.getName());
dos.flush();
dos.writeLong(file.length());
dos.flush();
//传输文件
byte[]sendBytes=newbyte[1024];
intlength=0;
while((length=fis.read(sendBytes,0,sendBytes.length))>0){
dos.write(sendBytes,0,length);
dos.flush();
}
}catch(Exceptione){
e.printStackTrace();
}finally{
if(fis!
=null)
fis.close();
if(dos!
=null)
dos.close();
client.close();
}
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args)throwsException{
newHelloClient();
}
}
【实验过程】(实验步骤、记录、数据、分析)
1.服务器先启动,等待客户端连接
2.客户端启动,连接到服务器
3.客户端输入文件路径,回车,开始传输文件
4.服务器接收文件。
5.服务端接收文件完毕,等待下次接收。
服务端截图:
客户端截图:
【实验演示】
实验结论与心得
用java语言能很容易地实现网络通信,使用socket可以传输任何类型的文件,文件读取时要熟悉java中文件读取的方式以及文件结束的标记。
1.对java语言的应用有了进一步的熟悉。
2.对于网络通信的实现更深入的了解和强化了自身使用socket的能力。
3.加深了分布式计算的实现
指导教师评语及成绩
评语:
成绩:
指导教师签名:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 实验 报告