UDP点对点语音通信开发文档_第1页
UDP点对点语音通信开发文档_第2页
UDP点对点语音通信开发文档_第3页
UDP点对点语音通信开发文档_第4页
UDP点对点语音通信开发文档_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z计算机网络课程设计说明书题目: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课设目的利用所学的计算机网络的理论知识进展基于UDP协议点对点语音通信,体会网络协议的设计与实现过程,以及专业技术人员所使用的根本方法和技巧;熟悉相关应用开发工具,掌握网络协议应用开发技术;培养一定的自学能力和独立分析问题、解决问题的能力;对设计中遇到的问题,能通过独立思考、查阅资料、参考文献,寻求解决方案。2.2课设要求〔1〕通过基于UDP的连接方式进展局域网上的两台电脑的语音通信。〔2〕客户端具有图形化界面2.3课设开发环境这次做的基于UDP的点对点语音通信程序的主要开发环境包括:硬件环境:IntelP42.8GCPU1GDDR内存软件环境:MicrosoftWindows*P操作系统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客户机方DatagramSocketreceiveDatagramSocketreceive/send关闭Socket关闭Socketsend/receiveDatagramSocket四、详细设计4.1主要设计思想是基于C/S模型下的点对点的实时语音通信系统的软件。该系统主要分为波形音频的采集回放、音频数据分组及复原、语音传输三个模块。音频模块主要由windows提供的wave系列函数完成。分组后即使在传输时丢包也不会丧失一整段声音数据而只是造成声音的局部失真,从而保证了声音可以得到尽可能完整的复原,进一步保证了正常实时的语音通信。传输采用了实时性强的无连接的UDP协议。在开发时使用Eclipse开发工具结合套接字来实现。本软件的界面非常简单,易于操作,用户可以轻松的和对方进展语音通信。总体的流程图用户上线用户上线初始化Socket初始化Socket发送信息语音聊天发送信息语音聊天接收信息的过程用户上线用户上线启动接收信息线程启动接收信息线程等待用户发来信息等待用户发来信息用户上线发送消息的过程用户上线初始化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(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;}}音频捕捉以及发送程序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(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接口的一种,通过它就可以直接从音频硬件获取数据了line.open(format,line.getBufferSize());}catch(E*ceptione*){return;}byte[]data=newbyte[1024];//跟下面的1024应保持一致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);//写入网络流}catch(E*ceptione*){break;}}line.stop();line.close();line=null;}}监听按钮事件代码publicvoidactionPerformed(ActionEvente) {if(e.getSource()==send)//如果是命令是发送则启动发送线程并且将要发送的内容添加到display面板中去 { Strings;if((write.getTe*t().toString()).equals(")) { JOptionPane.showMessageDialog(null,"发送的内同不能为空!","注意",JOptionPane.INFORMATION_MESSAGE);//如果发送内容是空的则制止发送 } else {display.append("\n老大:"+(newDate().toString())+"\n"+write.getTe*t());//这是显示当前时间newSendThread().start(); } }if(e.getSource()==close)//如果命令是关闭则整个程序完毕 { System.e*it(0); }if(e.getSource()==talk)//如果命令是语音聊天进展判断第一次点击该命令的时候是请求语聊第二次则是关闭语聊 {if(begin)//如果是第一次则是请求语聊 {display.append("\n正与对方建立连接!"); talk.setLabel("关闭语音");//设置按钮的内容begin=false;newTalkReq

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论