免费预览已结束,剩余9页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机技术综合课程设计学生姓名: 学 号: 6103105048 专业班级: 计算机051班 指导教师: 二00八 年 7 月 4 日目 录1.课程设计目的 22.课程设计题目描述和要求 23.课程设计内容 24.课程设计总结 125.参考书目 121.课程设计目的1.加深典型的client/server编程;2.理解发送和接收数据的协议匹配;3.学会使用线程机制来建立服务器;4.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;2.课程设计题目描述和要求实现文件传输功能 主要功能:(1)有客户端和服务器端(2)客户端可以上传各种类型的文件(3)服务器端可以接受很多文件上传(4)客户端发出请求后,在服务器端应答后能将文件传到服务器上(5)实验实现时用环回测试将本机看作客户端和服务器端3.课程设计报告内容3.1课程设计源程序程序1-client.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import .*;import java.io.*;public class client extends jframe implements actionlistener string str=; private jtextfield t1; private jlabel l1,l2; private jbutton exit,ok,open; private jfilechooser choose=new jfilechooser(); private file myfile; public client() container c=getcontentpane(); panel p1=new panel(); panel p2=new panel(); panel p3=new panel(); c.setlayout(new gridlayout(3,1); p1.setlayout(new flowlayout(); p2.setlayout(new flowlayout(); p3.setlayout(new gridlayout(2,1); t1=new jtextfield(35); l1=new jlabel(,jlabel.center); l2=new jlabel(,jlabel.center); exit=new jbutton(退出); ok=new jbutton(上传); open=new jbutton(浏览.); exit.addactionlistener(this); ok.addactionlistener(this); open.addactionlistener(this); p1.add(t1); p1.add(open); c.add(p1); p2.add(ok); p2.add(exit); c.add(p2); p3.add(l1); p3.add(l2); c.add(p3); setsize(500,200); show(); public void actionperformed(actionevent e) str=; if(e.getsource()=exit)system.exit(0); try if(e.getsource()=ok) if(t1.gettext()!=) this.client(); catch(exception t) system.out.println(t.tostring(); if(e.getsource()=open) this.openf(); public void openf() int result=choose.showopendialog(null); myfile=choose.getselectedfile(); if(result=jfilechooser.approve_option) t1.settext(myfile.getpath(); else if(result=jfilechooser.cancel_option) t1.settext(); myfile=null; public void client() byte ff; int size; socket clientsocket; printstream ps; string filename; try /创建一个上传的socket clientsocket=new socket(,8765); ps=new printstream(clientsocket.getoutputstream(); size=(int)myfile.length(); filename=myfile.getname(); bufferedreader br=new bufferedreader(new inputstreamreader(clientsocket.getinputstream(); string over=n; byte p=over.getbytes(); byte name=(filename+over).getbytes(); system.out.println(new string(name); /文件名 ps.write(name); ps.flush(); string s1=br.readline(); string tmp=string.valueof(size)+over; byte bsize=tmp.getbytes(); /文件大小 ps.write(bsize); ps.flush(); string s2=br.readline(); str=上传结束,请选择其它文件; l1.settext(str); str=已上传的文件为+s1.trim()+;大小为+s2.trim(); l2.settext(str); /文件内容 fileinputstream in=new fileinputstream(myfile); bufferedinputstream bf=new bufferedinputstream(in); ff=new byte1024; int c; while(c=bf.read(ff)!=-1) ps.write(ff,0,c); ps.close(); bf.close(); in.close(); clientsocket.close(); t1.settext(); catch(exception e) system.out.println(e.tostring(); public static void main(string args) client app=new client(); app.addwindowlistener(new windowadapter() public void windowclosing(windowevent e) system.exit(0); ); 程序2-server.javaimport .*;import java.io.*;import java.util.*;class mythread extends threadprivate socket clientsocket;private int counter;public mythread(socket i,int c)clientsocket=i;counter=c;/采用同步机制public synchronized void run()trydatainputstream br=new datainputstream(clientsocket.getinputstream();dataoutputstream output=new dataoutputstream(clientsocket.getoutputstream();/文件大小byte n=new byte225;br.read(n);output.write(n);output.flush();/文件名byte ll=new byte255;br.read(ll);output.write(ll);output.flush();string tmpe=new string(ll);int a=integer.parseint(tmpe.trim();/创建文件用于保存上传的文件string names=new string(n);file myfile=new file(d:);string files=d:+myfile.separator+(names.trim();fileoutputstream out=new fileoutputstream(files);bufferedoutputstream bw=new bufferedoutputstream(out);byte ff=new byte1024;int c=0;/把上传的数据输出至文件while(c=br.read(ff)!=-1)bw.write(ff,0,c);bw.close();output.close();out.close();br.close();clientsocket.close();catch(exception e)system.out.println(e);public class serverprivate static socket clientsocket;private static int counter;public static void main(string args)int i=1;serversocket serversocket;tryserversocket=new serversocket(8765);while(true) system.out.println(等待客户端上传文件.);/监听与本socket的连接并且接受它clientsocket=serversocket.accept();/创建线程,将上传数据写至服务器的文件中thread t=new mythread(clientsocket,i);t.start(); system.out.println(上传成功!);i+;catch(exception e)system.out.println(e); 3.2实验结果1 测试程序结果时,要先运行服务器端程序server.java,让服务器端准备好接受客户端请求,然后才能运行客户端程序,如图1。图 1 等待接受上传文件2 运行客户端程序client.java,效果如图2。图 23 点击“浏览”,弹出文件对话框,如图3所示。图 34 找到某个目录下的某个文件,然后打开。我选择了d:国产井冈山国语tvrip-rmvbtftf井冈山01.rmvb,打开后效果如图4。图 45 点击“上传”后,等待一段时间后client.java程序运行效果如图5。图 56 服务器端程序运行效果如图6。图 67 用于保存上传的文件的目录里面多了个上传的文件,如图7。图 78 再上传一个文件,如图8。图 89 点击“上传”后运行效果如图9。图 910 服务器端运行效果如图10。图 1011 用于保存上传的文件的目录里面又多了个刚上传的文件,如图11。图 114.结论在做课程设计以前,我对文件传输的理解只是停留在理论知识的水平上,是“纸上谈兵”,缺乏实际的程序设计经验。这次通过做课程设计,我基本完成了老师下达的设计任务。这是我这个课程设计的第二次设计,之前第一次的设计报告发给老师后完全不符合老师的要求,因为上学期课程设计的老师和林老师不一样,而我是完全按照上学期的思维来写设计报告的。在这次的设计过程中我几乎完全改了第一次的程序,在看了老师的模板后,我才知道自己的第一次的设计报告有多乱多繁琐,而且没有图形界面,没有良好的交互性。现对这次的设计几点体会总结如下:其一,本程序我选择用java进行开发。由于之前学过java语言,所以有一定的基础,但是因为过了比较长的时间,关于java的很多知识都忘记了,很多java 组件都不知道怎么用,后来经过努力复习才记起了那些基本知识。其二, 在接到任务后我发现自己完全不懂网络编程的知识,而这个课程设计又要用到网络编程的知识,但是经过自己到图书馆查阅很多资料,最终掌握了网络编程的技巧,并完成了这次的编程。其三,通过这次编程,我学会了运用java语言进行网络编程,提高了自身的网络编程能力。总之,经过这几天的努力,我最终完成了“基于java的文件传输功能实现”的设计。在整个设计过程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第二单元课时备课(教学实录)-2024-2025学年一年级上册数学青岛版
- Unit 3 Seasons Story Time(教学实录)-2023-2024学年人教新起点版英语二年级下册
- 2023七年级历史下册 第二单元 辽宋夏金元时期:民族关系发展和社会变化第7课 辽、西夏与北宋的并立教学实录 新人教版
- 全国川教版信息技术七年级上册第9课《计算机操作系统》教学实录
- 生锈与防锈(教学实录)-2024-2025学年科学六年级上册人教鄂教版
- 中国热稳定剂行业市场发展态势及未来趋势研判报告
- KFC肯德基鸡排店配方 13碳烤鸡排
- Phosphostim-sodium-生命科学试剂-MCE
- 《分数加法和减法》(教学实录)-2023-2024学年五年级下册数学苏教版
- Unit 2 What time is it Part B Let's talk (教学实录)-2023-2024学年人教PEP版英语四年级下册
- 蔬菜水果供货服务方案
- 2023年高级电气工程师年终总结及年后展望
- “源网荷储”一体化项目(储能+光伏+风电)规划报告
- 数据保密协议书
- 高考英语词汇3500电子版
- 电梯配件明细表
- 附件一钢材技术规格书
- 实习单位鉴定表(模板)
- 只争朝夕-不负少年-初中励志班会课件
- 一元二次方程复习课件市公开课一等奖省课获奖课件
- 技术成熟度评价报告
评论
0/150
提交评论