993397239《計(jì)算機(jī)技術(shù)綜合》課程設(shè)計(jì)報(bào)告_第1頁
993397239《計(jì)算機(jī)技術(shù)綜合》課程設(shè)計(jì)報(bào)告_第2頁
993397239《計(jì)算機(jī)技術(shù)綜合》課程設(shè)計(jì)報(bào)告_第3頁
993397239《計(jì)算機(jī)技術(shù)綜合》課程設(shè)計(jì)報(bào)告_第4頁
993397239《計(jì)算機(jī)技術(shù)綜合》課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 計(jì)算機(jī)技術(shù)綜合課程設(shè)計(jì)學(xué)生姓名: 學(xué) 號(hào): 6103105048 專業(yè)班級(jí): 計(jì)算機(jī)051班 指導(dǎo)教師: 二00八 年 7 月 4 日目 錄1.課程設(shè)計(jì)目的 22.課程設(shè)計(jì)題目描述和要求 23.課程設(shè)計(jì)內(nèi)容 24.課程設(shè)計(jì)總結(jié) 125.參考書目 121.課程設(shè)計(jì)目的1.加深典型的client/server編程;2.理解發(fā)送和接收數(shù)據(jù)的協(xié)議匹配;3.學(xué)會(huì)使用線程機(jī)制來建立服務(wù)器;4.提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問題的能力;2.課程設(shè)計(jì)題目描述和要求實(shí)現(xiàn)文件傳輸功能 主要功能:(1)有客戶端和服務(wù)器端(2)客戶端可以上傳各種類型的文件(3)服務(wù)器端可以接受很多文件上傳(4)客戶

2、端發(fā)出請(qǐng)求后,在服務(wù)器端應(yīng)答后能將文件傳到服務(wù)器上(5)實(shí)驗(yàn)實(shí)現(xiàn)時(shí)用環(huán)回測(cè)試將本機(jī)看作客戶端和服務(wù)器端3.課程設(shè)計(jì)報(bào)告內(nèi)容3.1課程設(shè)計(jì)源程序程序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,l

3、2; 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 flowl

4、ayout(); 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(

5、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(

6、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

7、() byte ff; int size; socket clientsocket; printstream ps; string filename; try /創(chuàng)建一個(gè)上傳的socket clientsocket=new socket(,8765); ps=new printstream(clientsocket.getoutputstream(); size=(int)myfile.length(); filename=myfile.getname(); bufferedreader br=new bufferedreader(new inputstreamreader(

8、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(

9、); string s2=br.readline(); str=上傳結(jié)束,請(qǐng)選擇其它文件; l1.settext(str); str=已上傳的文件為+s1.trim()+;大小為+s2.trim(); l2.settext(str); /文件內(nèi)容 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(

10、); 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

11、 .*;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;/采用同步機(jī)制public synchronized void run()trydatainputstream br=new datainputstream(clientsocket.getinputstream();dataoutput

12、stream 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();/創(chuàng)建文件用于保存上傳的文件string names=new string(

13、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;/把上傳的數(shù)據(jù)輸出至文件while(c=br.read(ff)!=-1)bw.write(ff,0,c);bw.close();output.close();out.close();br

14、.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(等待客戶端上傳文件

15、.);/監(jiān)聽與本socket的連接并且接受它c(diǎn)lientsocket=serversocket.accept();/創(chuàng)建線程,將上傳數(shù)據(jù)寫至服務(wù)器的文件中thread t=new mythread(clientsocket,i);t.start(); system.out.println(上傳成功!);i+;catch(exception e)system.out.println(e); 3.2實(shí)驗(yàn)結(jié)果1 測(cè)試程序結(jié)果時(shí),要先運(yùn)行服務(wù)器端程序server.java,讓服務(wù)器端準(zhǔn)備好接受客戶端請(qǐng)求,然后才能運(yùn)行客戶端程序,如圖1。圖 1 等待接受上傳文件2 運(yùn)行客戶端程序client.java,

16、效果如圖2。圖 23 點(diǎn)擊“瀏覽”,彈出文件對(duì)話框,如圖3所示。圖 34 找到某個(gè)目錄下的某個(gè)文件,然后打開。我選擇了d:國產(chǎn)井岡山國語tvrip-rmvbtftf井岡山01.rmvb,打開后效果如圖4。圖 45 點(diǎn)擊“上傳”后,等待一段時(shí)間后client.java程序運(yùn)行效果如圖5。圖 56 服務(wù)器端程序運(yùn)行效果如圖6。圖 67 用于保存上傳的文件的目錄里面多了個(gè)上傳的文件,如圖7。圖 78 再上傳一個(gè)文件,如圖8。圖 89 點(diǎn)擊“上傳”后運(yùn)行效果如圖9。圖 910 服務(wù)器端運(yùn)行效果如圖10。圖 1011 用于保存上傳的文件的目錄里面又多了個(gè)剛上傳的文件,如圖11。圖 114.結(jié)論在做課程設(shè)

17、計(jì)以前,我對(duì)文件傳輸?shù)睦斫庵皇峭A粼诶碚撝R(shí)的水平上,是“紙上談兵”,缺乏實(shí)際的程序設(shè)計(jì)經(jīng)驗(yàn)。這次通過做課程設(shè)計(jì),我基本完成了老師下達(dá)的設(shè)計(jì)任務(wù)。這是我這個(gè)課程設(shè)計(jì)的第二次設(shè)計(jì),之前第一次的設(shè)計(jì)報(bào)告發(fā)給老師后完全不符合老師的要求,因?yàn)樯蠈W(xué)期課程設(shè)計(jì)的老師和林老師不一樣,而我是完全按照上學(xué)期的思維來寫設(shè)計(jì)報(bào)告的。在這次的設(shè)計(jì)過程中我?guī)缀跬耆牧说谝淮蔚某绦颍诳戳死蠋煹哪0搴?,我才知道自己的第一次的設(shè)計(jì)報(bào)告有多亂多繁瑣,而且沒有圖形界面,沒有良好的交互性?,F(xiàn)對(duì)這次的設(shè)計(jì)幾點(diǎn)體會(huì)總結(jié)如下:其一,本程序我選擇用java進(jìn)行開發(fā)。由于之前學(xué)過java語言,所以有一定的基礎(chǔ),但是因?yàn)檫^了比較長的時(shí)間,關(guān)于java的很多知識(shí)都忘記了,很多java 組件都不知道怎么用,后來經(jīng)過努力復(fù)習(xí)才記起了那些基本知識(shí)。其二, 在接到任務(wù)后我發(fā)現(xiàn)自己完全不懂網(wǎng)絡(luò)編程的知識(shí),而這個(gè)課程設(shè)計(jì)又要用到網(wǎng)絡(luò)編程的知識(shí),但是經(jīng)過自己到圖書館查閱很多資料,最終掌握了網(wǎng)絡(luò)編程的技巧,并完成了這次的編程。其三,通過這次編程,我學(xué)會(huì)了運(yùn)用java語言進(jìn)行網(wǎng)絡(luò)編程,提高了自身的網(wǎng)絡(luò)編程能力。總之,經(jīng)過這幾天的努力,我最終完成了“基于java的文件傳輸功能實(shí)現(xiàn)”的設(shè)計(jì)。在整個(gè)設(shè)計(jì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論