网络聊天工具课程设计.docx
- 文档编号:11553733
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:40
- 大小:250.99KB
网络聊天工具课程设计.docx
《网络聊天工具课程设计.docx》由会员分享,可在线阅读,更多相关《网络聊天工具课程设计.docx(40页珍藏版)》请在冰豆网上搜索。
网络聊天工具课程设计
JISHOU UNIVERSITY
专业课课程论文
题目:
网络聊天工具
作者:
学号:
所属学院:
信息科学与工程学院
专业年级:
总评分:
完成时间:
吉首大学信息科学与工程学院
摘要
从实际工程应用角度出发,以计算机网络原理为指导,结合当前网络中的一些常用技术,编程实现基于NETBIOS的网络聊天工具,该聊天工具具有聊天室聊天、广播聊天、二人私聊、语音聊天以及文件传输功能。
该论文主要对当今聊天软件的发展情况、与该聊天软件相关的各种技术以及该聊天工具的实现做了一个详细的阐述:
1.作为计算机网络的应用之一聊天工具,受到了用户的普片爱好,它把人们带进了一个虚拟的网络世界,大大的加深了人们之间的联系。
从单一的文本聊天,到语音聊天以及到现在的图像、视频聊天、及时短信的发送和在线游戏等功能的开发,已经大大的拓展了聊天工具的概念,它将会作为未来人们通过因特网相互联系和娱乐的主要平台。
2.聊天工具的开发主要用到了网络通信技术、语音的采集、压缩、传输、解压缩以及回放等技术、文件传输技术、windows的多线程技术以及视频的采集、压缩解压缩技术等。
3.该聊天软件基于NETBIOS通信,在此基础上,实现点对点聊天、广播聊天、一对多聊天、语音聊天以及文件的传输。
4.该聊天工具可以运行于任何支持NETBIOS协议的机器上。
5.该聊天工具用到了多线程的设计,因此线程之间的同步是一大关键之处。
6.由于系统采用c/s结构,客户端与客户端以及客户端与服务器端需要传送一些控制消息,因此系统需要自定义一些消息类型,这是该聊天工具的又一大关键之处。
7.语音聊天作为一个独立的模块,镶嵌在点对点的聊天中,语音聊天的关键之处在于语音的采集,压缩,发送,解压缩,回放上.压缩算法采用TRUESPEECH,声音的采集主要利用操作系统提供的WAVEX函数,这是windows较早的一组支持声音的API。
8.文件传输作为另一个独立的模块,大大拓展了该聊天工具的功能,其传输资料利用了原有的NETBIOS通信,关键需要同步双方的发送和接受线程。
关键词:
网络通信,NETBIOS,聊天,语音聊天,文件传输
ABSTRACT
Intheopinionofpracticalengineeringandguidedbycomputernetworkprincipalandtakingsomecommonnetworktechnicals,ItakethesoftwareforchattingtoolbasedonNETBIOSintopractical.Thesoftware’sfunctionsincludechatting-roomchat、broadcastedchat、pointtopointprivatechat、soundchatandtransportingfiles.Thisarticleismainparticularexpatiateaboutthedevelopmentoftodaychattingsoftware、thetechnicalsofchattingsoftwareandthedesigning,programmingofthesoftwareforchattingtool:
Thechattingtool,whichisoneoftheapplicationsofthecomputernetwork,becomesthefavouriteofmajorusers,whichbringsusersintoavirtualnetworkworldandgreatlyaddsuptherelationsofusers.Fromformersingletextchatting,tosoundchatting,andthedevelopmentoftheimage,videochatting,transportingnoteintimeandgamingonnet,thesehasgreatlyaddsuptheconceptionofthechattingtools,whichwillbethemainflatroofofusers’srelatingandentertainmentbyinternet.
Thedevelopmentofthechattingtoolmainlytakesadvantagesofthenetworkcommunicationtechnicals,gathering、compressing、transporting、decompressingandplayingsoundinformationtechnicals,transportingfilestechnicals,multiplethreadstechnicalonwindowsandgathering、compressinganddecompressingvideoinformation.
ThesoftwareisbasedonthecommunicationoftheNETBIOS,implementingthepointingtopointingchatting,broadcastingchattingandtheonetomanychatting,aswellasthesoundchattingandthefilestransporting.
Thischattoolcanrunontheanymachine,whichsupportstheNETBIOSprotocol.
Thesoftwarehasamultiplethreads,thereforethesynchronizationofthethreadsisakeypoint.
Itisneedthattransportcontrolinformationbetweenclientandclient,clientandserverbecauseofthesystem’sC/Sstructure.Soitisanotherkeypointthatthesoftwaredefinesmanytypesofinformationitself.
Soundchattingisenchasedinthepointingtopointingchattingasanindependentmodule.Gathering,compressing,transporting,decompressingandplayingsoundinformationarethekeytechnicalofthesoundchatting.ThearithmeticofcompressingadoptstheTRUESPEECH.ThegatheringofsoundinformationmainlytakesadvantageofthefunctionsofWAVEX,whichisagroupofquiteoldAPIsofwindowsthatsupportsound.
Transportingfiles,whichisasaindependentmodule,greatlyaddsupthefunctionsofchattingtool,whichtransportsinformationbynetbioscommunication.Itskeypointissynchronizingthesendingthreadandrecvievingthreadwitheachother.
KEYWORDS:
networkcommunication,
NETBIOS,chatting,soundchatting,
filetransporting
第1章绪论
1.1项目开发的背景
自从上世纪中叶第一台计算机诞生以来,计算机越来越走进人们的生活当中,特别是随着计算机网络的发展,把全世界的人们紧密的联系在一起,大大的扩展了计算机的功能,人们越来越离不开计算机了。
如今,作为网络应用之一的聊天工具,越来越受到人们的欢迎和重视。
现在已有的聊天软件和聊天工具不胜枚举,流行的主要有QQ,ICQ,MSNMessage,NetMeeting,mIRC和郎码UC和各种的网页聊天室等。
这些软件特别是QQ升级很快,其功能是越来越来强大,将代表着聊天软件的发展方向。
目前,聊天软件的功能除了最基本的文本聊天,已经可以语音聊天,图像聊天,视频聊天,文件传输等三维聊天,还发展了短信发送,无线聊天,在线游戏等功能,可以预见在不久的将来,聊天软件将成为人们通过因特网相互联系和娱乐的主要平台。
然而这些软件的一个共同的缺点是采用了c/s的结构模式,如果服务器出现故障,则这个聊天系统都将瘫痪。
该毕业设计课题为基于netbios的聊天工具的设计与实现,它是在netbios通信和文本聊天的基础上来实现语音聊天,文件传输。
从一开始就要求该聊天软件能够自建服务器,它能够被应用在一个个独立的自治系统中,灵活性很大。
1.2项目开发的主要内容
设计并实现基于NETBIOS的文本聊天程序包括广播聊天,聊天室聊天,二人私聊,涉及的内容包括通信方式的选择,及选择会话方式是资料报还是建立连接方式,netbios通信,身份验证和房间名验证,建立服务器,连接服务器以及vc接口实现等;设计并实现基于NETBIOS的语音聊天,文件传输,涉及的内容包括通信方式的选择外,还有多播与广播,多线程,语音技术,文件传输技术等内容。
1.3项目开发的意义
本项目是作为本科的毕业设计课题提出来的,它规模适中,适合于个人开发,能够锻炼同学的学习新知识能力,锻炼同学的编程能力,锻炼同学的软件工程的思维方式。
它的具体意义见下面:
1.聊天工具已经被广大用户使用,由于服务器固定的局限性,当服务器瘫痪或到服务器的网络中断时,将使聊天系统崩溃,该聊天工具正好弥补了这个缺陷,可以用于任一个自治系统中,灵活性大,实用性强。
2.目前,计算机的发展离不开网络这一方向,网络将大大扩展计算机的功能,研究计算机在网络方面的技术以及应用,挖掘计算机的网络潜能,将能够大大提高我们对计算机的本身的认识,同时也能加深对计算机网络的认识。
3.网络的一大应用就是用于用户之间联络的聊天工具,通过对聊天工具的开发,我们将了解计算机如何通过网络相互通信以及在此相互通信的基础上实现的应用程序级的协议。
4.随着文本聊天的普及,人们对多媒体通信越来越渴望,其中语音聊天就是一种既廉价又能够满足人们感官需要的一种聊天方式,这只需要聊天的双方各有一个声卡和耳机即可,这是一般计算机的基本配置。
通过对语音聊天的开发,我们将学会操作系统如何支持开发人员对声音的采集,压缩,解压缩,回放,以及如何利用就计算机网络来传送语音信息,来实现语音聊天。
语音聊天是该软件的难点之处,也是特色之处。
如何保证语音的质量,减少噪音,需要在编程调试的实践过程中不断摸索。
5.加深对在网络中传输文件理解。
1.4项目开发的过程
该项目的开发过程大致是这样的,可以分为三个大的阶段:
第一个阶段是该软件的计划,分析和调研阶段,在这个阶段里,大致的学习了相关的技术,分析了相关的聊天软件的性能和功能。
这个阶段大致到2012年10月16号结束。
第二阶段就是软件的设计与实现。
从10月16号到10月18号,是该软件的需求分析与初步设计以及实现阶段,这是该软件的第一个模型。
从10月18号到10月20号是对软件的结构进行改进的阶段,这是该软件的第二个模型。
从10月20号到10月23号,在该阶段提出了新的目标,即加入语音聊天。
从10月23日至10月25日,在原有的基础上增加了文件的传输功能,并且对界面做了改进。
从这也可以说,该软件的总体开发模式采用原型演化的开发模型,因为这个项目只是个人开发,而且先前对有些知识不是很了解,所有这些都是采用原型开发的必然因素。
现在该项目已经基本上完成了所有的要求,还扩展了一些功能。
第三个阶段是软件的测试和文档整理阶段。
从10月25日至10月27日,完成了对软件的所有的功能的测试,并且整理软件的文档,写完论文。
软件由我个人负责,采用原型的开发模型,分成通信模块,文本聊天的模块,语音聊天的模块等主要的几大模块。
该项目规模适中,适合一个人工作。
软件开发到最后提交总共用了14天。
第2章系统分析
2.1对已有聊天软件的分析
如今,聊天软件种类繁多,发展迅速。
下面简要的对已有的聊天软件作一下总结分析:
1.功能分析
作为如今流行的聊天软件之一QQ,功能已经非常强大,基本上朝着三个大的方向发展,即个人及时通信,企业实时通信和娱乐资讯。
它的功能主要有:
v个人文本聊天
v个人语音聊天
v个人视频聊天
v图像传输
v文件传输
v在线游戏
v手机通讯
v聊天室聊天
v隐身,上线
v群聊天
v企业级实时通信
可以看出,聊天软件的发展方向是三维化,人性化,综合化。
2.网页聊天室
作为另一种聊天软件形式,网页聊天室也受到用户的普遍欢迎。
网页聊天室的优点就是很好的利用了浏览器的功能,用户不需要安装任何新的软件,即可加入聊天室聊天。
现在的网页聊天室除了文本聊天之外,语音聊天也很常见。
由于其客户端的简化,其功能必然受到限制。
3.缺陷
不管是QQ,还是网页聊天室,其最大的缺陷就是服务器固定,用户必须连接上服务器。
如果想在一个自治系统之内(一个孤立的网络)通信,NetMeeting是一款不错的软件。
本项目的开发目标也是如此,即追求服务器的灵活性,任何用户都可以建立自己的服务器。
2.2系统有关的技术
2.2.1网络通信技术
在windows下,网络通信的技术有netbios编程,重定向器、邮槽和管道,Winsock编程以及WinInetAPI等。
下面简单的介绍一下netbios和winsock编程技术。
1.NETBIOS
网络基本输入/输出系统(NetworkBasicInput/OutputSystem,NetBIOS)是一种标准的应用程序编程接口(API)。
对应于OSI模型,NetBIOS主要在会话和传输层发挥作用。
NetBIOSAPI实施方案适用于为数众多的网络协议,使得编程接口“与协议无关”。
NetBIOSAPI中的两个主要的概念是LANA编号和NetBIOS名。
LANA编号对应于物理网卡和传输协议的唯一组合NetBIOS名长度16个字符,其中第16个字符作为特殊用途保留下来。
在Win32环境下,针对每个可用的LANA号,每个进程都会为其维持一张NetBIOS名字表。
若为LANA0增添一个名字,意味着应用程序只能在LANA0上同客户端建立连接。
另外,NetBIOS名分为唯一名字和组名两种类型。
NetBIOS同时提供了“面向连接”服务以及“无连接”服务。
有了上面的概念,我们来看看NetBIOSAPI的设置,只有一个函数:
UCHARNetbios(PNCBPncb);其中PNCB是指网络控制块的指针,该网络控制块包含了Netbios命令和所需的参数。
2.WINSOCK
在为通信双方开发应用程序的情况下,套接字是相当有用的。
可以说网络通信的基石是套接字,一个套接字是通信的一端。
在WINDOWS系统中进行编程时,总是需要使用很多系统提供的应用程序接口来调用系统功能,或者与系统交互,在WINDOWS系统中专门针对网络编程的接口——WinSockAPI。
该接口包含了一组网络I/0和获取网络信息的库函数,这些函数均需要套接字作为一个参数。
实际上,一个套接字包含了本地协议端口,本地主机地址,远地协议端口,远地主机地址,协议这5种信息,是网络通信中的一个端点的抽象。
WINSOCK规范不仅包含了人们所熟悉的BerkeleySocket风格的库函数,也包含了一组针对windows的扩展库函数,以使程序员能充分的利用windows消息驱动机制进行编程。
3.两种技术的比较
这两种编程接口各有优缺点,下面是对它们的一个比较:
vNetbios编程接口简单易学,Winsock编程接口较多。
v这两种编程接口在标示应用程序时所采用的方法不同,Netbios采用Netbios名+lana号,winsock采用套接字。
vNetbios被更多的协议支持,也就是所谓的与协议无关,而winsock只能在tcp/ip上面运行。
vNetbios适用于一个网段内通信,不能跨越网段通信,而winsock可以,适合整个网络通信。
2.2.2语音聊天技术
语音聊天的关键技术是语音的采集与播放,语音的压缩解压缩以及语音的传送。
对于语音的传送,需要借助于网络通信技术。
下面对语音的采集与播放和语音的压缩解压缩技术作一下介绍:
2.2.2.1语音的采集与播放
在windows下,有两种编程接口可以实现语音的采集与播放,这就是DirectSound和waveX函数。
下面简单的介绍一下这两种技术
1.DirectSound技术
DirectSound是DirectXAPI的音频(waveaudio)组件之一,它可以提供快速的混音、硬件加速功能,并且可以直接访问相关设备,当然,最主要的是它提供的功能与现有的(?
将来的呢?
)设备驱动程序保持兼容性。
DirectSound允许进行波型声音的捕获、重放,也可以通过控制硬件和相应的驱动来获得更多的服务。
实现DirectSound需要以下几个步骤:
v创建及初始化DirectSound;利用函数DirectSoundCreate创建一个IdirectSound对象或者利用函数DirectSoundCaptureCreate创建一个IdrectSoundCapture。
v设定应用程序的声音设备优先级别方式,一般为DSSCL_NORMAL,利用SetCooperativeLevel函数;
v如果是播放声音,则利用IDirectSound创建声音缓冲区对象,利用IdirectSound的方法CreateSoundBuffer来创建,然后载入声音数据播放及停止。
v如果要录制声音,则利用IdirectSoundCapture的方法CreateCaptureBuffer来创建一个捕捉缓冲区对象,然后可以开始声音数据的录制与停止。
2.WaveX技术
WaveformFunctions是windows提供一组较早的波形声音的采集与播放的API,主要包含了一组函数,对输入设备的操作以waveIn打头,对输出设备的操作以waveOut打头。
如果想采集声音,其需要用到得函数有如下:
最主要的是waveInStart(顾名思义就是开始录音),然后是waveInStop(它能够在你指定的缓冲满的时候返回);如果不用waveInStop可以使用waveInReset(不同于Stop的是该函数不等缓冲满就马上返回那样你才可以终止录音),不过最好跟waveInGetPosition配合使用。
说完这些函数,不得不提的是为以上几个函数做准备工作的函数(注意配对使用),waveInOpen和waveInClose配对(waveInOpen里面指定音频的格式,比方说立体声和16位音质等);waveInPrepareHeader和waveInUnprepareHeader配对(waveInPrepareHeader里面指定用来录音缓冲的大小和首地址),紧跟着waveInPrepareHeader要例行公事调用waveInAddBuffer。
如果是播放声音,则类似采集声音,基本上与采集声音的函数一一对应,以waveOut打头。
3.两种技术的比较
WaveX技术是较早的一组支持声音操作的API,功能有限。
DirectSound是新发展的技术,功能强大,能够支持混音,硬件加速操作。
尽管DirectSound技术必将替代waveX技术,但是waveX技术也能够解决一些简单的任务,在这方面,waveX技术还是挺有效的。
例如播放一个简单的音频流,直接用PlaySound或者waveOut函数即可。
2.2.2.2语音的压缩与解压缩
音频和视频数据是大多数多媒体向用户提供信息的主要方式,这些数据一般具有较高的采样速率,如果不经过压缩的话,保存他们需要消耗大量的存储空间,在网络上传输的效率也很低。
就音频数据而言,目前常用的压缩方法有很多种,不同的方法具有不同的压缩比和还原音质,编码的格式和算法也各不相同,有的相当复杂,普通程序不可能去实现其编解码算法。
在windows中,引入了ACM(AudioCompressionManager,音频压缩管理器),负责管理系统中的所有音频编码译码器(CODECs)。
ACM的API主要有:
acmGetVersion,acmMetrics,acmDriverEnum,acmDriverDetails,acmDriverOpen,acmDriverClose,
acmStreamOpen,acmStreamConvert,acmStreamClose等,利用这些API就可以完成音频的压缩和解压缩。
如今流行的编码有以下几种:
PCM,WAVE,MP3,OGG,MPC,MP3PRO,WMA,RA,APE,TRUESPEECH等编码方式。
本聊天工具就是采用TRUESPEECH压缩算法,由于TRUESPEECH压缩算法只能处理8000HZ,16位单声道的数据,我们采用两步压缩,首先将源数据压缩成TRUESPEECH支持的中间PCM格式,然后再压缩成TRUESPEECH格式的数据,通常,TRUESPEECH的压缩率达到10:
1。
2.2.3文件传输技术
FTP是Ineternet上文件传输的通用方法。
它是TCP/IP的应用,工作在OSI模型的第七层,TCP模型的第四层,即应用层上,使用TCP传输协议。
FTP通过两个TCP连接传输一个文件,这两个连接分别为控制连接和数据连接。
服务器以被动方式打开TCP端口21连接,客户以主动方式打开TCP端口21连接,这种连接用于传送客户与服务器之间的命令信息。
数据连接是传输数据的全双工连接。
FTP的命令分为访问控制命令,传输参数命令以及FTP服务命令。
对于本聊天工具文件传输的应用,由于是点对点的单文件传输,形式和服务较简单,因此在两点之间只建立一条连接,控制连接和数据连接合为一条连接,并且利用已有的NETBIOS通信传输控制命令和文件数据。
传输的的文件类型任意,传输模式为流模式(二进制类型)。
2.2.4多线程技术
多线程函数是Win32的一个重要方面,其编程技术较为新颖,在程序设计思路上不同于传统的模块结构化方法,比一般的面向对象的思路也较为复杂,尤其是对于多处理器平台的处理更为复杂。
要设计出性能良好的多线程程序,不仅需要对操作系统的处理过
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 聊天工具 课程设计