![《計算機網絡系統(tǒng)實踐》課程設計報告-網絡文件傳輸_第1頁](http://file4.renrendoc.com/view/847bbb581b2df3c9fe916b5fb784b17b/847bbb581b2df3c9fe916b5fb784b17b1.gif)
![《計算機網絡系統(tǒng)實踐》課程設計報告-網絡文件傳輸_第2頁](http://file4.renrendoc.com/view/847bbb581b2df3c9fe916b5fb784b17b/847bbb581b2df3c9fe916b5fb784b17b2.gif)
![《計算機網絡系統(tǒng)實踐》課程設計報告-網絡文件傳輸_第3頁](http://file4.renrendoc.com/view/847bbb581b2df3c9fe916b5fb784b17b/847bbb581b2df3c9fe916b5fb784b17b3.gif)
![《計算機網絡系統(tǒng)實踐》課程設計報告-網絡文件傳輸_第4頁](http://file4.renrendoc.com/view/847bbb581b2df3c9fe916b5fb784b17b/847bbb581b2df3c9fe916b5fb784b17b4.gif)
![《計算機網絡系統(tǒng)實踐》課程設計報告-網絡文件傳輸_第5頁](http://file4.renrendoc.com/view/847bbb581b2df3c9fe916b5fb784b17b/847bbb581b2df3c9fe916b5fb784b17b5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、計算機網絡系統(tǒng)實踐報告 年 1 月一、 設計要求1. 實現單線程文件傳輸功能;2. 在以上基礎上,掌握多線程技術,在文件網絡傳輸時,可選擇單線程或多線程;3. 加入異??刂埔罁鰪姵绦虻聂敯粜裕≧obust) ;4. 了解如何提高套接字傳輸的速率,以及如何加強傳輸的穩(wěn)定性。二、開發(fā)環(huán)境與工具Eclips+java三、設計原理1文件共享傳輸方式原理:主要采用TCPIP協(xié)議訪問資源,一般是利用名字解析NETBIOS,dns,wins獲得對方的IP地址,獲取對方共享資源列表,當點擊共享資源時候,客戶機對服TCP數據,必須先建立一個虛擬電路,也就是TCP連接,建立TCP連接的標準過程是這樣的:第一步
2、,請求端(客戶端)發(fā)送一個包含SYN標志的TCP即同步TCP連接的初始序號;第二步,服務器在收到客戶端的SYN報文后,將返回一個SYN+ACK的報文,表示客戶端的請求被接受,同時 TCP 序號被加一,ACK 即確認ACKTCP序列號被加一,到此一個TCP連接完成。以上的連接過程在TCP協(xié)議中被稱為三次握手(Three-way會話連接建立后,對方檢查共享資源的設置,通過注冊表中的共享級別。BufferReader來獲取通道中的字節(jié)流中的內容網絡文件傳輸主要由兩個方面組成:1.客戶端1客戶端:接受服務器發(fā)來的文件2服務器:1服務器端的設計:創(chuàng)建服務器對象ServerSocket ss = new
3、ServerSocket (11111);循環(huán)等待客戶端的連接,若有客戶端訪問,就單獨為它創(chuàng)建一個線程While(true)Socket s = ss.accept();New thread(new UserThread(s).start();封裝字節(jié)流BufferedReaderbr=newBufferedReader(newInputStreamReader(s.getInputStream();給出反饋bwServer.write(“文件上傳成功”);釋放資源bw.close();2.客戶端的設計創(chuàng)建客戶端對象Sockert s = new Socket();封裝文件BufferedWr
4、iterbw=newBUfferWriter(newOutputStreamWriter(s.getOutputStream();從通道中接受并反饋String client = brClient.readLine();System.out.println(client);釋放資源s.colse();六、關鍵問題及其解決方法1怎樣實現多線程的問題:While(true)Socket s = ss.accept();New thread(new UserThread(s).start();2怎樣讓/ 封裝通道內的流BufferedReaderbr=newBufferedReader(newInp
5、utStreamReader(s.getInputStream();/ 封裝文本文件/ BufferedWriter bw = new BufferedWriter(new/ FileWriter(Copy.java);/ 為了防止名稱沖突String newName = System.currentTimeMillis() + .txt;BufferedWriterFileWriter(newName);bw=newBufferedWriter(newString line = null;while (line = br.readLine() != null) / 阻塞bw.write(li
6、ne);bw.newLine();bw.flush();客戶端與服務器端運用TCP協(xié)議進行連接七、設計結果1功能:實現客戶端與服務器之間進行文件的傳輸2課后思考題我編寫的程序是基于阻塞的。阻塞模式和非阻塞模式的主要區(qū)別在于無請求來到時,阻塞模式會一直停在接收函數即accep函數,直到有請求到來才會繼續(xù)向下進行處理。而非阻塞模式下,運行接收函數,如果有請求,則會接收請求,如果無請求,會返回一個負值,并繼續(xù)向下運行。一般來說,使用阻塞模式的程序比較多,因為阻塞模式是由內核保障等待請求的,當他阻塞時不占用系統(tǒng)資源,而非阻塞模式需要我們人工輪詢,占用資源較多。另外,阻塞模式可以使用select函數設置
7、超時時間。多線程是這樣一種機制,它允許在程序中并發(fā)執(zhí)行多個指令流,每個指令流都稱為一個線程,彼此間互相獨立。 線程又稱為輕量級進程,它和進程一樣擁有獨立的執(zhí)行控制,由操作系統(tǒng)負責調度,區(qū)別在于線程沒有獨立的存儲空間,而是和所屬進程中的其它線程共享一個存儲空多個線程的執(zhí)行是并發(fā)的,有一個CPU,那么真正的“同時”是不可能的,但是由于CPU的速度非???,用戶感覺不到其中的區(qū)別,因此我們也不用關心它,只需要設想各個線程是同時執(zhí)行即可。八、軟件使用說明1首先運行服務器端運行UploadServer.java2. 接著運行客戶端接著運行UploadClinet.java九、參考資料【1】,機械工業(yè)出版社,作者姓名:Bruce Eckel(2008.10)十、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Pyridyl-disulfide-Dexamethasone-生命科學試劑-MCE-7118
- 2025年度生姜種植與鄉(xiāng)村旅游融合發(fā)展合作協(xié)議
- 二零二五年度解除勞動合同經濟補償標準與法律依據合同
- 二零二五年度小微企業(yè)貸款服務合同
- 2025年度門頭制作施工與綠色建筑認證服務合同
- 2025年度幼兒園品牌授權與技術轉讓合作協(xié)議
- 二零二五年度質押式回購證券化合同模板
- 二零二五年度勞動合同終止證明及競業(yè)禁止合同
- 老年人長期護理保險中對于慢病包括慢腎病的分層次管理體系探索與實踐
- 中小企業(yè)勞動合同標準格式參考
- PHOTOSHOP教案 學習資料
- 2012年安徽高考理綜試卷及答案-文檔
- 《游戲界面設計專題實踐》課件-知識點5:圖標繪制準備與繪制步驟
- 自動扶梯安裝過程記錄
- MOOC 材料科學基礎-西安交通大學 中國大學慕課答案
- 中國城市居民的健康意識和生活方式調研分析報告
- 復產復工試題含答案
- 售后服務經理的競聘演講
- 慢加急性肝衰竭護理查房課件
- 文件丟失應急預案
- 全球職等系統(tǒng)GGS職位評估手冊
評論
0/150
提交評論