




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
./1.UDP概念UDP是UserDatagramProtocol的簡稱,中文名是用戶數(shù)據(jù)包協(xié)議,是OSI參考模型中一種無連接的傳輸層協(xié)議,提供面向事務的簡單不可靠信息傳送服務,IETFRFC768是UDP的正式規(guī)。2.文件傳輸流程2.1在此使用UDP協(xié)議傳送文件的程序中,先在服務器端設定監(jiān)聽端口號〔3666,在接收客戶端發(fā)來的請求之前一直處于阻塞狀態(tài);在客戶端則從本地讀取二進制文件并封裝成數(shù)據(jù)報,并發(fā)送到相應的服務器端〔ip:127.0.0.1,端口:3666;當服務器端接收到客戶端發(fā)來的請求后,則對數(shù)據(jù)進行處理,即讀取并保存數(shù)據(jù),然后返回操作后的信息到客戶端;當客戶端接收到服務器端的信息后,則輸出服務器端返回的信息,到此時就完成了客戶端的請求和服務器端的應答;最后關閉DatagramSocket。3.程序流程圖Receive<>Receive<>接收到來自客戶端的數(shù)據(jù)writeFile<>Socket<>readFile<>sendTo<>Receive<>sendTo<>客戶端服務器端YN顯示返回的信息Close<>Socket<>數(shù)據(jù)應答發(fā)送文件4.程序部分源碼4.1服務器端源碼publicclassServerextendsThread{ DatagramSocketds=null; DatagramPacketdp=null; Filefile=null;Overridepublicvoidrun<>{//TODOAuto-generatedmethodstubtry{//設置端口為3666ds=newDatagramSocket<3666>;while<true>{byte[]buf=newbyte[1024*64];//用于接收長度為1024的數(shù)據(jù)包dp=newDatagramPacket<buf,buf.length>;//從此套接字接收數(shù)據(jù)報包,此方法在接收到數(shù)據(jù)之前處于阻塞狀態(tài)ds.receive<dp>;//保存接收文件,文件名取系統(tǒng)當前時間longtemp=System.currentTimeMillis<>;this.saveFile<dp,temp+"">;//為使反饋過程效果明顯,線程休眠2秒后發(fā)送回復信息 Thread.sleep<2000>; Stringmessage="serverhasreceivedit."; DatagramPacketpacket=newDatagramPacket<message.getBytes<>, message.length<>,InetAddress.getLocalHost<>,6666>;//發(fā)送回復數(shù)據(jù)包ds.send<packet>; } }catch<Exceptione>{ e.printStackTrace<>; } }/** *保存接收到的文件 * *paramdp *paramfilePath保存文件所在的路徑 *throwsIOException */privatevoidsaveFile<DatagramPacketdp,StringfilePath>throwsIOException{ FileOutputStreamfileOutputStream=newFileOutputStream<newFile< filePath>>; fileOutputStream.write<dp.getData<>,0,dp.getData<>.length>; fileOutputStream.close<>; }}4.2客戶端源碼publicclassClient{privateDatagramSocketds=null;privateDatagramPacketdp=null;/** *傳輸文件 *paramfilePath文件所在路徑 */publicvoidTransmitFile<StringfilePath>{try{//從本地讀取文件byte[]data=this.readFile<filePath>;ds=newDatagramSocket<6666>;//封裝數(shù)據(jù)報dp=newDatagramPacket<data,<int>data.length, InetAddress.getLocalHost<>,3666>;//開始傳輸文件ds.send<dp>;//接收從服務器回復的信息byte[]buf=newbyte[1024];dp=newDatagramPacket<buf,buf.length>;ds.receive<dp>;byte[]server=dp.getData<>; System.out.println<"客戶端-->收到服務器返回的信息:\n"+newString<server,0,dp.getLength<>>.trim<>>; }catch<Exceptione>{ e.printStackTrace<>; }finally{ds.close<>; } }/** *讀取文件 * *paramfilePath *文件路徑 *return *throwsIOException */publicbyte[]readFile<StringfilePath>throwsIOException{ Filefile=newFile<filePath>;if<!file.exists<>>{returnnull; } InputStreaminputStream=newFileInputStream<file>; ByteArrayOutputStreamout=newByteArrayOutputStream<1024>;byte[]data=newbyte[1024];intlen=0;while<<len=inputStream.read<data>>!=-1>{ out.write<dat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煉鐵固體廢棄物資源化利用技術考核試卷
- 設施布局優(yōu)化研究考核試卷
- 內(nèi)河航道維護對貨物運輸企業(yè)戰(zhàn)略規(guī)劃的影響評估考核試卷
- 期末模擬測試卷(含解析)-2024-2025學年人教版五年級數(shù)學下冊
- 家用紡織品價格波動與消費者收入水平關系探討考核試卷
- 保健食品原料市場消費者忠誠度與品牌忠誠度分析考核試卷
- 內(nèi)科護理學??荚囶}(含答案解析)
- 遼寧省沈陽市沈北新區(qū)2023-2024學年八年級下學期期中考試英語試題(解析版)
- 2020年成人高考高起專語文文學常識綜合應用
- 2025至2030年中國業(yè)務流程管理(BPM)行業(yè)發(fā)展監(jiān)測及發(fā)展戰(zhàn)略規(guī)劃報告
- 2025年人教版小學四年級下冊數(shù)學期末提升測試試題(含答案和解析)
- 勁性復合樁技術規(guī)程知識培訓
- DB43-T 2448-2022 公路邊坡地質災害智能監(jiān)測技術規(guī)程
- 《中華人民共和國民營經(jīng)濟促進法》培訓解讀課件
- T/CHES 59-2021組合式金屬防洪擋板安裝、驗收及維護規(guī)范
- 學生自主學習能力培養(yǎng)的關鍵路徑研究
- 基于AI的智能語音助手創(chuàng)業(yè)計劃書模板
- 《醫(yī)療英語口語》課件
- 糖尿病培訓內(nèi)容
- 2025年水利工程師職稱考試試題及答案
- 2025北京高三一模地理匯編:人文地理(非選擇題)
評論
0/150
提交評論