Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1221359
  • 博文数量: 950
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 13070
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-04 09:23
文章分类

全部博文(950)

文章存档

2011年(1)

2008年(949)

我的朋友

分类: C/C++

2008-08-04 09:32:49

下载本文示例代码
下载源代码

引言
  本人虽已学习VC 一年半载,仍觉捉襟见肘,好在有VCKBASE的帮忙,确实学到了不少东西,也成了我每次上民网必到之处(阁下有所不知,鄙人接受最为严格的管理,上民网是要申请的)。近日在做一个通信 方面的程序,实时的语音和视频通信当然是大家所喜欢的。本文将向您展示局域网环境下实时语音通信的的一个解决方案(视频这一块正在做,估计很快就能出炉),Winxp环境下测试效果良好,并且具有网络 拥塞处理机制,您不妨一看。
  本文以第26期 栾义明 先生的《基于API的录音机程序》为基础的,在此深表感谢。雷同之处将不再赘述,主要做了以下发展:
  • (1) 利用多线程机制,实现录音、网络传输、放音同时进行。
  • (2) 网络壅塞处理,保证数据不丢失。
  • 例子程序运行画面:



    下面且看我细细道来:

    (一)首先定义了一个声音数据“块”

    struct CAudioData
    
    {
    
    	PBYTE lpdata; //指向语音数据,注意这里内存区域是动态申请释放的
    
    	DWORD dwLength;//语音数据长度
    
    }
    
    
    接下来申明两个循环队列和相关指针。
    //InBlocks,OutBlocks非别为两个常数
    
    CAudioData m_AudioDataIn[InBlocks],m_AudioDataOut[OutBlocks];
    
    int   nAudioIn, nSend, //录入、发送指针
    
         nAudioOut, nReceive;//接收、播放指针
    
    
    // 对于录音和放音都存在和网络的同步问题,主要靠这些指针进行协调

    讨论:如图所示,几个指针的相互追逐,这种机制在处理网络拥塞上应该有普遍的应用意义
      下载本文示例代码

       
    阅读(240) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~