您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > UDP点对点语音通信开发文档
编号:计算机网络课程设计说明书题目:UDP点对点语音通信系别:专业:学生姓名:学号:指导教师:题目类型:理论研究实验研究工程设计工程技术研究软件开发2011年3月22日摘要随着计算机网络的日益普及,人们通过网络进行交流显得越来越重要,出现了很多语音聊天软件。为了把所学知识用于实践之中,我利用Eclipse软件平台,利用DatagramSocket套接字和DatagramPacket数据包来发送用户数据,实现了基于UDP传输协议的点对点语音通信。UDP(UserDatagramProtocol)是一种无连接,与TCP操作不同,计算机之间并不需要建立一个连接,同时,一个UDP应用可同时作为应用的客户端或者服务器端,基于C/S模式。虽然UDP不提供可靠性,不保证能不能到达目的地,而且它没有超时重发机制,但是正因为这样,但是它的传输速度非常快。所以作一个基于UDP的局域网点对点语音是比较好的。因为局域网中,数据一般不会丢失,同时又可以达到很快的速度,用户使用起来比较方便。该程序主要完成了局域网中两台电脑之间语音通信,在做好这个前提的情况下,我也增加了文字聊天的功能,不过由于时间匆忙,界面看起来比较粗糙,不够晚上。关键字:UDP协议,语音通信,Internet目录一、引言……………………………………………………………二、课设要求………………………………………………2.1、课设目的…………………………………………………2.2、课设要求…………………………………………………2.3、课设开发环境…………………………………………2.4、课设前准备工作…………………………………………三、概要设计………………………………………………………3.1、需求分析…………………………………………………3.2、可行性分析…………………………………………………3.3、系统的总体结构…………………………………………四、详细设计………………………………………………………4.1、主要的设计细想…………………………………………4.2、总体的流程图…………………………………………4.3、接收信息的过程程…………………………………………3.4、发送消息的过程…………………………………………4.5、发现文件的过程…………………………………………五、运行调试和截图5.1、客户端之间的聊天…………………………………………5.2、客户实现组播实现群聊…………………………………………5.3、客户端之间的文件传输…………………………………………六、课程设计体会6.1、总结……………………………………………………七、参考文献……………………………………………………八、附录……………………………………………………引言如今已进入网络化时代,就好像有句话说的好,宁愿一天不吃饭,也不能一天不上网。从而可以看出网络时代已经悄悄来临。网上购物,网上从商,网上作业,网络课堂,网上聊天等等,社会已进入信息时代。由此而产生的聊天工具也越来越多,语音聊天系统的发展日新月异。网上聊天使现实距离变短,加强了联系,同时通过制作该程序来更好的学习网络软件的编程知识和巩固计算机网络知识。这次基于UDP点对点语音通信的课设,能够实现在局域网中两台电脑语音通信。但是实现过程中,发现也解决好多问题。比如,音频捕捉以及怎么发送,利用UDP传输数据包需要注意的些什么问题,怎么才能让其不丢包;音频捕捉后如何让它输出等等。所以,这次课设我们不仅能学习网络编程知识,巩固网络理论知识,还能锻炼我们分析问题和解决问题的能力,为我们提供了一次实践操作的机会,也为以后的学习提供了宝贵的经验。二、课设要求2.1课设目的(1)利用所学的计算机网络的理论知识进行基于UDP协议点对点语音通信,体会网络协议的设计与实现过程,以及专业技术人员所使用的基本方法和技巧;(2)熟悉相关应用开发工具,掌握网络协议应用开发技术;培养一定的自学能力和独立分析问题、解决问题的能力;(3)对设计中遇到的问题,能通过独立思考、查阅资料、参考文献,寻求解决方案。2.2课设要求(1)通过基于UDP的连接方式进行局域网上的两台电脑的语音通信。(2)客户端具有图形化界面2.3课设开发环境这次做的基于UDP的点对点语音通信程序的主要开发环境包括:(1)硬件环境:IntelP42.8GCPU1GDDR内存(2)软件环境:MicrosoftWindowsXP操作系统Eclipse8.5+JDK1.62.4课设前准备工作在图书馆借阅有关计算机网络和语音通信的书籍,同时我也再次翻阅了以前的Java书籍和计算机网络相关知识,结合自己对UDP协议的了解和对java编程的认识,对这次课设进行了详细的功能分析和划分。同时我在博客园,infoq等网站论坛寻找解决问题的方法,同时也积极同水平较高的同学请教。三、课设要求设计3.1、需求分析局域网点对点语音聊天(UDP)这个软件能实现在两台Pc机之间用麦克风进行语音聊天,并且通讯采用UDP协议。DatagramSocket是基于TCP/IP协议之上的一个接口规范,它为应用层之间的通信提供了保障。3.2、可行性分析(1)环境可行性:因为我们每个人都有了自己的电脑,而且这次课设主要用到Eclipse软件,所以我们只要在自己的电脑上安装该软件即可。没有Eclipse软件的可以在网上免费下载一个,安装上即可。(2)经济可行性:我们要用到的资源和材料,图书馆都有,而且现在网上也有很多免费的资源共享,所以,我们要花的成本并不高,经济上可行。3.3、系统的总体结构本程序的总体功能结构图如下所示:(因为UDP没有严格的服务器方和客户方,可以随便定义一方为客户方)(1)点对点语音通信UDP服务器方UDP客户机方(UDP客户机方)(UDP服务器方)四、详细设计4.1主要设计思想是基于C/S模型下的点对点的实时语音通信系统的软件。该系统主要分为波形音频的采集回放、音频数据分组及还原、语音传输三个模块。音频模块主要由windows提供的wave系列函数完成。分组后即使在传输时丢包也不会丢失一整段声音数据而只是造成声音的部分失真,从而保证了声音可以得到尽可能完整的还原,进一步保证了正常实时的语音通信。传输采用了实时性强的无连接的UDP协议。在开发时使用Eclipse开发工具结合套接字来实现。本软件的界面非常简单,易于操作,用户可以轻松的和对方进行语音通信。总体的流程图关闭Socketsend/receiveDatagramSocketDatagramSocketreceive/send关闭Socket用户上线4.2、接收信息的过程4.3、发送消息的过程五、运行调试和截图初始化Socket发送信息语音聊天用户上线启动接收信息线程等待用户发来信息用户上线初始化Socket发送信息六、课程设计体会对于这次课程设计,一早觉得语音通信应该是比较简单的,后来真正上手后发现音频处理那一块确实比较难,但已经选了这个题目,所以就上网看了比较多资料,可以说对我们所学知识的一个大总结吧,也是是一次宝贵的学习和自我提高的机会,在实现过程需要自己不断的思考,查阅资料,调试·····这样一个循序渐进的过程,也正是因为这样的实践才把我们所学的很多专业基础知识教会融合在一起了,这可以说是一个很难得的机会。在做完这个课设的时候,我对自己做了一个总结,觉得基础知识非常重要,很多东西不能只看眼前,要放眼未来,只有基础打牢了,才能更快,更容易的上手。所以说大一大二学的数据结构啊,一些数学之类的东西到了后面都非常有用,当没有用到的时候,是因为我们所学的知识太狭隘了,太粗浅了。七、参考文献Java语言程序设计Y.DanielLiang著机械工业出版社2008-12-1Java网络编程与分布式计算DavidReillyMichaelReilly著机械工业出版社2006-1-1计算机网络AndrewS.Tanenbaum著清华大学出版社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(Exceptione){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(LineUnavailableExceptionex){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)//Writesaudiodatatothemixerviathissourcedataline}catch(Exceptione){break;}}if(thread!=null){line.drain();}line.stop();line.close();line=null;}}音频捕捉以及发送程序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();//建立输出流此处可以加套压缩流用来压缩数据}catch(Exceptionex){return;}AudioFormatformat=newAudioFormat(8000,16,2,true,true);//audioformat(floatsamplerate,intsamplesizeinbits,intchannels,//booleansigned,booleanbigendian)DataLine.Infoinf
本文标题:UDP点对点语音通信开发文档
链接地址:https://www.777doc.com/doc-2401543 .html