摘 要
本毕业设计任务是设计一个局域网点对点的聊天软件,其主要功能是允许局域网用户们进行语音聊天,锻炼我们动手开发系统软件的能力。
在本文中将对本语音聊天的软件的实现过程进行分析,对开发工具、录音知识、网络通信等知识进行了简要介绍。接下来就是剖析此软件开发的原理,并对软件实现的核心代码进行了重点分析。
本文共分为5章,第1章是绪论,第2章主要介绍了用C++ OOP程序设计的相关知识技术,包括网络通信、多媒体技术,WINDOWS下的图形应用软件开发技术等等。第3章介绍软件设计的实现原理,第4章主要是涉及到软件核心模块代码的分析,第5章是软件使用方法和界面截图说明等,其后是致谢和附录等内容。
我最终完成的作品,能很简单的进行局域网的互联,实现局域网用户间的文字和语音的聊天。软件结构良好,有很好重用性。若在此基础上再融合上视频模块,就成为了一个应用性很强的网络视频聊天软件。
关键词:C++、OOP、API、语音录制、网络通信
ABSTRACT
This graduation design is a chat software about p2p,its main function is allow the LAN users speak and literalness chats.Improve our capability of develop the software of system.
I will analysis to carry out the process of the software in the article ,and introduce the develop tool、recording kownledge、net communication.After that I write the develope theory and analysis the nucleus code.
There are five chapters in the paper,Chapter 1 is an introduction,Chapter 2 mainly introduced how to use the c++ technique and connect with network,multi-media Windows re- lated techniques.The 3 told us the principle of the software.The next chapter mainly Analysis the Nucleus of the modle.
Chapter 5s are the softwares operation method. Afterward is to send thanks and the Chinese and English translation etc.
The graduation designs is simple to operated , can easy connect the LAN, , it has the reuse structure , if add a video mold ,become an net audio chat software with strong application .
Key Words: C++、OOP、API、 recording、net communicate
目 录
绪论 …………………………………………………………………………………5
第一章 相关基础知识介绍……………………………………………………… ……6
§1.1基于API的录音技术 …………………………………………………………6
§1.1.1数字音频基础知识 ………………………………………………………….6
§1.1.2相关API函数、结构、消息 ………………………………………………6
§1.1.3程序设计 ……………………………………………………………………8
§1.2 windows Socket 网络编程 …………………………………………………9
§1.2.1客户机/服务器模式 …………………………………………………………9
§1.2.2基本套接字 .………………………………………………………………10
§1.2.3典型过程图 ………………………………………………………………11
§1.3 开发工具综述 ………………………………………………………………14
§1.3.1 Visual C++的特点 …………………………………………………………14
§1.3.2 Visual C++开发步骤 ………………………………………………………15
§1.3.3 Visual studio 6.0工具概述 ……………………………………………15
第二章 软件设计的实现原理 ………………………………………………………16
§2.1软件实现原理 …………………………………………………………………16
§2.2软件的具体实现 ……………………………………………………………17
第三章 系统详细设计 ………………………………………………………………20
§3.1 主程序结构和流程 …………………………………………………………20
§3.1.1音频数据处理的类CSound ………………………………………………20
§3.1.2服务器端处理的类CserverSocket .. ............................24
§3.1.3主窗口对话框类CExample_ChatRoomDlg ………………………………25
§3.1.4数据串行化需要的类CMessg ……………………………………………28
§3.2 API主要音频函数及结构简要介绍 …………………………………………29
第四章 软件功能演示 ………………………………………………………………31
§4.1软件的使用功能 ………………………………………………………………31
§4.2软件功能的完善 ………………………………………………………………34
全文总结 ………………………………………………………………………………35
致 谢 …………………………………………………………………………………36
参考文献 ………………………………………………………………………………37
附录 ……………………………………………………………………………………38
一:英文原文
二:译文
三:部分源代码
绪 论
随着计算机应用技术的快速发展和日益普及,网络也遍及到我们生活的每个角落,很好的利用网络资源,将为我们的学习和工作,带来极大的方便,所以网络通讯软件是十分必要的。
现在,企业、机关、学校都建立起了局域网。虽然可以通过文件共享的方式进行通讯,但单使用这种方式,非常不方便。在网上邻居里,只能看到机器名,不清楚对方是谁,也不知道对方机器里有什么资源可以共享,尤其当局域网的机器很多时,这种方式就更加麻烦了。
很多人都使用过传统的文字输入聊天方式,与之不同的另外一种聊天方式就是语音聊天。主要对那些不会使用键盘的老年用户和追求时尚的年轻人,语音聊天是一种非常好的聊天方式,它能增加聊天双方的亲切感,使得聊天双方能聊的更加舒畅,更加开心。
但是语音聊天需要有很大的网络带宽,对于拨号上网用户,语音聊天仍然是奢侈品,不过对于局域网和宽带用户来说,是很不错的选择,本软件就是基于局域网的语音通讯。
语音聊天方式一般有两种,一种是专门的语音聊天室,采用Web方式,B/S结构,另外一中则是类似于QQ、MSN等聊天工具,采用C/S结构。本设计是采用的后者。TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式,首先服务器方要先启动,并根据请示提供相应服务
第一章 相关基础知识介绍
本章将对毕业设计所涉及的知识进行具体的介绍,本章共分三小节,第一节是对API的录音技术,此为设计中的语音获取部分,是设计核心模块之一。另外对VC工具进行开发也有必要进行一点说明,对语音传输的网络数据传输部分也有一个小节说明。下面我们来仔细说明:
1.1基于API的录音技术
1.1.1数字音频基础知识
Fourier级数:任何周期的波形可以分解成多个正弦波,这些正弦波的频率都是整数倍。级数中其他正线波的频率是基础频率的整数倍。基础频率称为一级波。
PCM: pulse code modulation,脉冲编码调制,即对波形按照固定周期频率采样。为了保证采样后数据质量,采样频率必须是样本声音最高频率的两倍,这就是Nyquist频率。
样本大小:采样后用于存储振幅级的位数,实际就是脉冲编码的阶梯数,位数越大表明精度越高,这一点学过数字逻辑电路的应该清楚。
声音强度:波形振幅的平方,两个声音强度上的差常以分贝(db)为单位来度量。 计算公式如下:20*log(A1/A2)分贝,A1,A2为两个声音的振幅。如果采样大小为8位,则采样的动态范围为20*log(256)分贝=48db。如果样本大小为16位,则采样动态范围为20*log(65536)大约是96分贝,接近了人听觉极限和痛苦极限,是再线音乐的理想范围。windows同时支持8位和16位的采样大小。