局域网音频对讲

局域网音频对讲涉及到音频采集、音频播放、网络传输等技术,需要使用到多线程处理的方式。

首先,网络中会传输两种类型的数据,一种是命令数据(信令),一种是音频数据。

其次,对讲的任何一端都需要接收音频数据,播放音频同时采集音频,发送音频数据。

第三,使用TCP方式,不必进行丢包处理和排序处理。

第四,将发起对讲请求一端称为客户端,把接收请求一端称为服务器。

服务器端打开一个侦听线程,等待客户端连接。当侦听线程中的accept返回有效套接字(表示有客户端与服务器成功连接),针对该套接字打开一个接收数据线程recvThread和处理数据线程processThread。recvThread的工作是接收客户端发过来的音频数据和信令,放到数据缓冲区中。processThread的工作是从数据缓冲区读取数据、分析数据、处理数据。

假如发送端发送了10次数据,每次都是1280字节,并不代表接收端也会接收10次,因为接收端每次接收的可能大于1280字节,而且,不一定是1280的整数倍,也就是说接收到的数据不是完整的一包,剩余的数据会在下次一次接收。因此,在定长的包头中设置一个数据长度,通过读取包头中的数据长度来判断需要读取多少数据。

工程源码:http://download.csdn.net/source/3194636

猜你喜欢

转载自blog.csdn.net/bwmwm/article/details/6326313