




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
-.z計算機(jī)網(wǎng)絡(luò)課程設(shè)計說明書題目:UDP點(diǎn)對點(diǎn)語音通信系別:專業(yè):學(xué)生**:**:指導(dǎo)教師:2011年3月22日摘
要隨著計算機(jī)網(wǎng)絡(luò)的日益普及,人們通過網(wǎng)絡(luò)進(jìn)展交流顯得越來越重要,出現(xiàn)了很多語音聊天軟件。為了把所學(xué)知識用于實踐之中,我利用Eclipse軟件平臺,利用DatagramSocket套接字和DatagramPacket數(shù)據(jù)包來發(fā)送用戶數(shù)據(jù),實現(xiàn)了基于UDP傳輸協(xié)議的點(diǎn)對點(diǎn)語音通信。UDP〔UserDatagramProtocol〕是一種無連接,與TCP操作不同,計算機(jī)之間并不需要建立一個連接,同時,一個UDP應(yīng)用可同時作為應(yīng)用的客戶端或者效勞器端,基于C/S模式。雖然UDP不提供可靠性,不保證能不能到達(dá)目的地,而且它沒有超時重發(fā)機(jī)制,但是正因為這樣,但是它的傳輸速度非常快。所以作一個基于UDP的局域網(wǎng)點(diǎn)對點(diǎn)語音是比擬好的。因為局域網(wǎng)中,數(shù)據(jù)一般不會喪失,同時又可以到達(dá)很快的速度,用戶使用起來比擬方便。該程序主要完成了局域網(wǎng)中兩臺電腦之間語音通信,在做好這個前提的情況下,我也增加了文字聊天的功能,不過由于時間匆忙,界面看起來比擬粗糙,不夠晚上。關(guān)鍵字:UDP協(xié)議,語音通信,Internet目錄引言……………課設(shè)要求………………2.1、課設(shè)目的…………………2.2、課設(shè)要求…………………2.3、課設(shè)開發(fā)環(huán)境…………2.4、課設(shè)前準(zhǔn)備工作…………概要設(shè)計………3.1、需求分析…………………3.2、可行性分析…………………3.3、系統(tǒng)的總體構(gòu)造…………詳細(xì)設(shè)計………4.1、主要的設(shè)計細(xì)想…………4.2、總體的流程圖…………4.3、接收信息的過程程…………3.4、發(fā)送消息的過程…………4.5、發(fā)現(xiàn)文件的過程…………運(yùn)行調(diào)試和截圖5.1、客戶端之間的聊天…………5.2、客戶實現(xiàn)組播實現(xiàn)群聊…………5.3、客戶端之間的文件傳輸…………課程設(shè)計體會6.1、總結(jié)……………………參考文獻(xiàn)……………………附錄……………………引言如今已進(jìn)入網(wǎng)絡(luò)化時代,就好似有句話說的好,寧愿一天不吃飯,也不能一天不上網(wǎng)。從而可以看出網(wǎng)絡(luò)時代已經(jīng)悄悄降臨。網(wǎng)上購物,網(wǎng)上從商,網(wǎng)上作業(yè),網(wǎng)絡(luò)課堂,網(wǎng)上聊天等等,社會已進(jìn)入信息時代。由此而產(chǎn)生的聊天工具也越來越多,語音聊天系統(tǒng)的開展日新月異。網(wǎng)上聊天使現(xiàn)實距離變短,加強(qiáng)了聯(lián)系,同時通過制作該程序來更好的學(xué)習(xí)網(wǎng)絡(luò)軟件的編程知識和穩(wěn)固計算機(jī)網(wǎng)絡(luò)知識。 這次基于UDP點(diǎn)對點(diǎn)語音通信的課設(shè),能夠?qū)崿F(xiàn)在局域網(wǎng)中兩臺電腦語音通信。但是實現(xiàn)過程中,發(fā)現(xiàn)也解決好多問題。比方,音頻捕捉以及怎么發(fā)送,利用UDP傳輸數(shù)據(jù)包需要注意的些什么問題,怎么才能讓其不丟包;音頻捕捉后如何讓它輸出等等。所以,這次課設(shè)我們不僅能學(xué)習(xí)網(wǎng)絡(luò)編程知識,穩(wěn)固網(wǎng)絡(luò)理論知識,還能鍛煉我們分析問題和解決問題的能力,為我們提供了一次實踐操作的時機(jī),也為以后的學(xué)習(xí)提供了珍貴的經(jīng)歷。二、課設(shè)要求2.1課設(shè)目的利用所學(xué)的計算機(jī)網(wǎng)絡(luò)的理論知識進(jìn)展基于UDP協(xié)議點(diǎn)對點(diǎn)語音通信,體會網(wǎng)絡(luò)協(xié)議的設(shè)計與實現(xiàn)過程,以及專業(yè)技術(shù)人員所使用的根本方法和技巧;熟悉相關(guān)應(yīng)用開發(fā)工具,掌握網(wǎng)絡(luò)協(xié)議應(yīng)用開發(fā)技術(shù);培養(yǎng)一定的自學(xué)能力和獨(dú)立分析問題、解決問題的能力;對設(shè)計中遇到的問題,能通過獨(dú)立思考、查閱資料、參考文獻(xiàn),尋求解決方案。2.2課設(shè)要求〔1〕通過基于UDP的連接方式進(jìn)展局域網(wǎng)上的兩臺電腦的語音通信。〔2〕客戶端具有圖形化界面2.3課設(shè)開發(fā)環(huán)境這次做的基于UDP的點(diǎn)對點(diǎn)語音通信程序的主要開發(fā)環(huán)境包括:硬件環(huán)境:IntelP42.8GCPU1GDDR內(nèi)存軟件環(huán)境:MicrosoftWindows*P操作系統(tǒng)Eclipse8.5+JDK1.62.4課設(shè)前準(zhǔn)備工作在圖書館借閱有關(guān)計算機(jī)網(wǎng)絡(luò)和語音通信的書籍,同時我也再次翻閱了以前的Java書籍和計算機(jī)網(wǎng)絡(luò)相關(guān)知識,結(jié)合自己對UDP協(xié)議的了解和對java編程的認(rèn)識,對這次課設(shè)進(jìn)展了詳細(xì)的功能分析和劃分。同時我在博客園,infoq等論壇尋找解決問題的方法,同時也積極同水平較高的同學(xué)請教。三、課設(shè)要求設(shè)計3.1、需求分析局域網(wǎng)點(diǎn)對點(diǎn)語音聊天〔UDP〕這個軟件能實現(xiàn)在兩臺Pc機(jī)之間用麥克風(fēng)進(jìn)展語音聊天,并且通訊采用UDP協(xié)議。DatagramSocket是基于TCP/IP協(xié)議之上的一個接口規(guī)*,它為應(yīng)用層之間的通信提供了保障。3.2、可行性分析〔1〕環(huán)境可行性:因為我們每個人都有了自己的電腦,而且這次課設(shè)主要用到Eclipse軟件,所以我們只要在自己的電腦上安裝該軟件即可。沒有Eclipse軟件的可以在網(wǎng)上免費(fèi)下載一個,安裝上即可?!?〕經(jīng)濟(jì)可行性:我們要用到的資源和材料,圖書館都有,而且現(xiàn)在網(wǎng)上也有很多免費(fèi)的資源共享,所以,我們要花的本錢并不高,經(jīng)濟(jì)上可行。3.3、系統(tǒng)的總體構(gòu)造本程序的總體功能構(gòu)造圖如下所示:〔因為UDP沒有嚴(yán)格的效勞器方和客戶方,可以隨便定義一方為客戶方〕〔1〕點(diǎn)對點(diǎn)語音通信 UDP效勞器方 UDP客戶機(jī)方DatagramSocketreceiveDatagramSocketreceive/send關(guān)閉Socket關(guān)閉Socketsend/receiveDatagramSocket四、詳細(xì)設(shè)計4.1主要設(shè)計思想是基于C/S模型下的點(diǎn)對點(diǎn)的實時語音通信系統(tǒng)的軟件。該系統(tǒng)主要分為波形音頻的采集回放、音頻數(shù)據(jù)分組及復(fù)原、語音傳輸三個模塊。音頻模塊主要由windows提供的wave系列函數(shù)完成。分組后即使在傳輸時丟包也不會喪失一整段聲音數(shù)據(jù)而只是造成聲音的局部失真,從而保證了聲音可以得到盡可能完整的復(fù)原,進(jìn)一步保證了正常實時的語音通信。傳輸采用了實時性強(qiáng)的無連接的UDP協(xié)議。在開發(fā)時使用Eclipse開發(fā)工具結(jié)合套接字來實現(xiàn)。本軟件的界面非常簡單,易于操作,用戶可以輕松的和對方進(jìn)展語音通信??傮w的流程圖用戶上線用戶上線初始化Socket初始化Socket發(fā)送信息語音聊天發(fā)送信息語音聊天接收信息的過程用戶上線用戶上線啟動接收信息線程啟動接收信息線程等待用戶發(fā)來信息等待用戶發(fā)來信息用戶上線發(fā)送消息的過程用戶上線初始化Socket初始化Socket發(fā)送信息發(fā)送信息五、運(yùn)行調(diào)試和截圖六、課程設(shè)計體會對于這次課程設(shè)計,一早覺得語音通信應(yīng)該是比擬簡單的,后來真正上手后發(fā)現(xiàn)音頻處理那一塊確實比擬難,但已經(jīng)選了這個題目,所以就上網(wǎng)看了比擬多資料,可以說對我們所學(xué)知識的一個大總結(jié)吧,也是是一次珍貴的學(xué)習(xí)和自我提高的時機(jī),在實現(xiàn)過程需要自己不斷的思考,查閱資料,調(diào)試·····這樣一個循序漸進(jìn)的過程,也正是因為這樣的實踐才把我們所學(xué)的很多專業(yè)根底知識教會融合在一起了,這可以說是一個很難得的時機(jī)。在做完這個課設(shè)的時候,我對自己做了一個總結(jié),覺得根底知識非常重要,很多東西不能只看眼前,要放眼未來,只有根底打牢了,才能更快,更容易的上手。所以說大一大二學(xué)的數(shù)據(jù)構(gòu)造啊,一些數(shù)學(xué)之類的東西到了后面都非常有用,當(dāng)沒有用到的時候,是因為我們所學(xué)的知識太狹隘了,太粗淺了。七、參考文獻(xiàn)Java語言程序設(shè)計Y.DanielLiang著 機(jī)械工業(yè) 2008-12-1Java網(wǎng)絡(luò)編程與分布式計算DavidReillyMichaelReilly著機(jī)械工業(yè)2006-1-1計算機(jī)網(wǎng)絡(luò)AndrewS.Tanenbaum著清華大學(xué)2008-12-12附錄:核心代碼//下面是音頻輸出的代碼:classPlaybackimplementsRunnable{finalintbufsize=16384;//緩存大小SourceDataLineline;Threadthread;DatagramSocketsocket;bytebuffer[]=newbyte[1024];DatagramPacketpac=newDatagramPacket(buffer,buffer.length);/**CreatesanewinstanceofUDPPlay*/publicPlayback(){}publicvoidstart(){thread=newThread(this);thread.setName("Playback");thread.start();}publicvoidstop(){thread=null;}publicvoidrun(){try{socket=newDatagramSocket(20001);}catch(E*ceptione){System.out.println("SocketError");}AudioFormatformat=newAudioFormat(8000,16,2,true,true);//audioformat(floatsamplerate(采樣率〕,//intsamplesizeinbits,intchannels,booleansigned,booleanDataLine.Infoinfo=newDataLine.Info(SourceDataLine.class,format);try{line=(SourceDataLine)AudioSystem.getLine(info);line.open(format,bufsize);}catch(LineUnavailableE*ceptione*){return;}intnumbytesread=0;line.start();while(thread!=null){try{socket.receive(pac);numbytesread=pac.getData().length;line.write(pac.getData(),0,numbytesread);//write(byte[]b,intoff,intlen)//Writesaudiodatatothemi*erviathissourcedataline}catch(E*ceptione){break;}}if(thread!=null){line.drain();}line.stop();line.close();line=null;}}音頻捕捉以及發(fā)送程序classCaptureimplementsRunnable{TargetDataLineline;Threadthread;DatagramPacketpacToSend;DatagramSocketsoc;Stringip;/**CreatesanewinstanceofUDPCapture*/publicCapture(Stringip){this.ip=ip;}publicvoidstart(){thread=newThread(this);thread.setName("Capture");thread.start();}publicvoidstop(){thread=null;}publicvoidrun(){try{soc=newDatagramSocket();//建立輸出流此處可以加套壓縮流用來壓縮數(shù)據(jù)}catch(E*ceptione*){return;}AudioFormatformat=newAudioFormat(8000,16,2,true,true);//audioformat(floatsamplerate,intsamplesizeinbits,intchannels,//booleansigned,booleanbigendian〕DataLine.Infoinfo=newDataLine.Info(TargetDataLine.class,format);try{line=(TargetDataLine)AudioSystem.getLine(info);//TargetDataLine接口是DataLine接口的一種,通過它就可以直接從音頻硬件獲取數(shù)據(jù)了line.open(format,line.getBufferSize());}catch(E*ceptione*){return;}byte[]data=newbyte[1024];//跟下面的1024應(yīng)保持一致intnumbytesread=0;line.start();while(thread!=null){numbytesread=line.read(data,0,1024);try{pacToSend=newDatagramPacket(data,data.length, InetAddress.getByName(ip),20001);soc.send(pacToSend);//寫入網(wǎng)絡(luò)流}catch(E*ceptione*){break;}}line.stop();line.close();line=null;}}監(jiān)聽按鈕事件代碼publicvoidactionPerformed(ActionEvente) {if(e.getSource()==send)//如果是命令是發(fā)送則啟動發(fā)送線程并且將要發(fā)送的內(nèi)容添加到display面板中去 { Strings;if((write.getTe*t().toString()).equals(")) { JOptionPane.showMessageDialog(null,"發(fā)送的內(nèi)同不能為空!","注意",JOptionPane.INFORMATION_MESSAGE);//如果發(fā)送內(nèi)容是空的則制止發(fā)送 } else {display.append("\n老大:"+(newDate().toString())+"\n"+write.getTe*t());//這是顯示當(dāng)前時間newSendThread().start(); } }if(e.getSource()==close)//如果命令是關(guān)閉則整個程序完畢 { System.e*it(0); }if(e.getSource()==talk)//如果命令是語音聊天進(jìn)展判斷第一次點(diǎn)擊該命令的時候是請求語聊第二次則是關(guān)閉語聊 {if(begin)//如果是第一次則是請求語聊 {display.append("\n正與對方建立連接!"); talk.setLabel("關(guān)閉語音");//設(shè)置按鈕的內(nèi)容begin=false;newTalkReq
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 濉溪縣重點(diǎn)達(dá)標(biāo)名校2025年初三下學(xué)期教學(xué)質(zhì)量檢測試題(一)數(shù)學(xué)試題含解析
- 蘭州資源環(huán)境職業(yè)技術(shù)大學(xué)《即興伴奏Ⅱ》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東省濟(jì)寧市梁山縣街道第一中學(xué)2024-2025學(xué)年下學(xué)期初三語文試題第二次適應(yīng)性測試試卷含解析
- 山東職業(yè)學(xué)院《微生物基礎(chǔ)及檢驗技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 紹興市新昌縣2024-2025學(xué)年三下數(shù)學(xué)期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 寧德職業(yè)技術(shù)學(xué)院《護(hù)理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年藝術(shù)生文化課聯(lián)考試題及答案
- 廈門大學(xué)嘉庚學(xué)院《政府信息資源管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年物流管理專業(yè)考試試卷及答案
- 外貿(mào)自學(xué)課件模板下載
- GB/T 20721-2006自動導(dǎo)引車通用技術(shù)條件
- GB/T 12704.2-2009紡織品織物透濕性試驗方法第2部分:蒸發(fā)法
- 公眾責(zé)任險、財產(chǎn)一切險培訓(xùn)課件
- 2022山東高考語文答題卡(新高考I卷)word版3
- lovo操作手冊中文翻譯版-professorgong
- 有限空間作業(yè)氣體檢測記錄表
- 重力式降落救生艇的降落和釋放裝置課件
- 土地集約利用教學(xué)課件
- 《食堂安全培訓(xùn)》ppt
- 油水井管理及動態(tài)分析.
- 完整版電力工程設(shè)計資質(zhì)分級標(biāo)準(zhǔn)
評論
0/150
提交評論