TCP局域网语音聊天详细设计说明书
任务说明书
局域网语音聊天(TCP
基本要求:   
1、通过麦克风进行一对一语音聊天;
2、通信协议采用TCP
3、聊天PC是互连的PC中的任意两台;
4、设计界面参考MSN
二、需求分析
局域网语音聊天(TCP)这个软件能实现在任意两台tcp ip协议下载安装Pc机之间用麦克风进行语音聊天,并且通讯采用TCP协议。Socket是基于TCP/IP协议之上的一个接口规范,它为应用层之间的通信提
供了保障。
Socket适用于客户/服务器模式的网络应用程序设计,在使用面向连接模式时,Socket使用TCP协议作为通信协议,为应用程序提供面向连接的服务。使用面向连接的模式需要在通信之前建立连接,其通信规程如图所示:
       
由图可以看出用Socket进行网络通信时,需要在客户端和服务器端分别创建一个Socket,服务器端创建成功以后在特定的端口上监听客户端的连接请求。如果有客户端的连接请求到来,则成功建立一个连接后,客户端和服务器端就可以互相进行通信了。但只能是和客户端进行点对点的通信,即服务器只允许有一个客户端的连接,如果有连接请求到达时,服务器端需要再创建一个新的Socket与客户端进行通信,而原来的那个Socket仍处于监听状态,等待新的客户的连接请求。
关于特定的端口,在通信中有十分重要的作用,在一个主机上可以运行多个应用程序,并且可能其中有多个都需要与其他的应用程序通过网络进行通信。如果主机接收到其他主机或设备发送来的数据,这时就需要端口来区别该主机上运行的应用程序。
任意两台Pc机进行通信其实是点对点通信,即两个应用程序分别在客户端和服务器的两台计算机上运行。使用TCP协议,必须有一端的应用程序首先进入监听状态,等待对方的连接请求。监听连接请求的一方叫服务器,而提出连接请求的一放方叫客户端。
软件功能简要说明:
本软件实现的是利用TCP通讯协议在局域网内的任意两台Pc机之间进行语音聊天,另外在语音信息的回放时可选择不同的音频格式,为了在网络上传送信息时节省带宽,在必要的时候还可以压缩语音信息后在发送。
三、软件设计说明
1、概要设计说明
面向连接TCP 协议的Socket编程是网络通信编程中的一种。此局域网语音聊天软件就是采用这种编程方法。总的来说可以分为下面的四步进行处理:
1) 程序必须建立一个Socket
2) 程序必须按照要求配置此Socket,也就是说程序要么将此Socket连接到远方的主机上,要么给此Socket指定一个本地协议端口;
3) 程序必须按要求通过此Socket发送和接收数据;
4) 程序必须关闭此Socket
编程思路:
1) 客户端:
——创建客户端套接字(CREATE);
——开始数据传输(SENDRECEIVE);
——关闭套接字(CLOSESOCKET);
2) 服务器端:
——创建服务器端套接字(CREATE);
——服务器端套接字进行信息绑定(BIND),并开始监听连接(LISTEN);
——接受来自客户端的连接请求(ACCEPT),并创建接收进程;
——开始数据传输(SENDRECEIVE);
——关闭套接字(CLOSESOCKET);
3) 语音的实时采集、处理和回放
程序采集音频并编码压缩后传输到远程端口进行解压回放。音频采集压缩过程与第一个sample类似。传输利用最简单的单播点对点TCP传输。
需要注意的是为了将CChatsocket类与dialog的偶合性松散,以dialogwnd)类作为模板参数将socket类写成了类模板。这样socket类不用与特定窗口或对话框绑定。在使用时用窗口/对话框类名实例化模板,并写onreceive()函数处理接受消息。这样当有多个窗口/对话框需要接收socket类时,不用写很多socket类。
另外将编解码类做成了抽象类(abstract class,也叫信封类或协议类,参见《design pattern
abstract factory模式)。让不同编解码具体类(concrete class,如gsmCodec, G729codec)继承抽象类并overide接口。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。