⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 一种基于局域网的点对点语音通信(3) - 语音通信 - 技术应用 - 豆豆网.htm

📁 可以实现实时语音通信
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0051)http://tech.ddvip.com/2006-04/11443514404025_3.html -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>一种基于局域网的点对点语音通信(3) - 语音通信 - 技术应用 - 豆豆网</TITLE><!-- 本模板由 legmail 最后于 2007-09-19 13:47 修改 -->
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK 
href="一种基于局域网的点对点语音通信(3) - 语音通信 - 技术应用 - 豆豆网.files/tech_content.css" 
type=text/css rel=stylesheet>
<STYLE>.nav {
	BACKGROUND: #f2f6fb; WORD-SPACING: 20px; TEXT-INDENT: 5px; LINE-HEIGHT: 28px; BORDER-BOTTOM: #aaa 1px solid; HEIGHT: 28px; TEXT-ALIGN: left
}
</STYLE>

<SCRIPT><!--document.domain = 'ddvip.com';var node = 'tech';var subid = "2006-04-07_4025";--></SCRIPT>

<META content="MSHTML 6.00.2900.3268" name=GENERATOR></HEAD>
<BODY>
<DIV id=main><!-- 页面头部 -->
<DIV class=header>
<DIV class=top_nav><A href="http://www.ddvip.com/">豆豆首页</A> - <A 
href="http://down.ddvip.com/">软件下载</A> - <A 
href="http://code.ddvip.com/">源码下载</A> - <A 
href="http://down.ddvip.com/news">软件资讯</A> - <A 
href="http://book.ddvip.com/">小说阅读</A> - <A 
href="http://club.ddvip.com/">技术论坛</A> - <A 
href="http://man.ddvip.com/">技术手册</A> - <A 
href="http://www.ddvip.com/link">网址导航</A> - <A 
href="http://law.ddvip.com/">法律资讯</A> - <A 
href="http://blog.ddvip.com/">博客人生</A> </DIV>
<DIV class=sitelogo><IMG alt=网站LOGO 
src="一种基于局域网的点对点语音通信(3) - 语音通信 - 技术应用 - 豆豆网.files/logo.gif"> 
<DIV class=top_ad_580x60 id=top_ad_580x60></DIV></DIV>
<DIV class=clear></DIV>
<UL class=global_nav>
  <LI><A href="http://tech.ddvip.com/index.html">技术首页</A> </LI>
  <LI><A href="http://tech.ddvip.com/os/index.html">操作系统</A> </LI>
  <LI class=global_nav_c><A 
  href="http://tech.ddvip.com/program/index.html">程序设计</A> </LI>
  <LI><A href="http://tech.ddvip.com/network/index.html">网络技术</A> </LI>
  <LI><A href="http://tech.ddvip.com/network/server/index.html">服务器</A> </LI>
  <LI><A href="http://tech.ddvip.com/safe/index.html">安全技术</A> </LI>
  <LI><A href="http://tech.ddvip.com/web/index.html">Web开发</A> </LI>
  <LI><A href="http://tech.ddvip.com/db/index.html">数据库</A> </LI>
  <LI><A href="http://tech.ddvip.com/pic/index.html">平面设计</A> </LI>
  <LI><A href="http://tech.ddvip.com/mediamovice/index.html">三维动画</A> </LI>
  <LI><A href="http://tech.ddvip.com/cert/index.html">认证考试</A> </LI>
  <LI><A href="http://tech.ddvip.com/soft/index.html">软件应用</A> </LI>
  <LI><A href="http://tech.ddvip.com/machine/index.html">机械电子</A> </LI></UL>
<DIV class=nav><A 
href="http://tech.ddvip.com/program/vc/visualstudio/index.html">VisualStudio</A> 
<A href="http://tech.ddvip.com/program/vc/interface/index.html">界面</A> <A 
href="http://tech.ddvip.com/program/vc/view/index.html">视图</A> <A 
href="http://tech.ddvip.com/program/vc/pic/index.html">图像</A> <A 
href="http://tech.ddvip.com/program/vc/multimedia/index.html">多媒体</A> <A 
href="http://tech.ddvip.com/program/vc/database/index.html">数据库</A> <A 
href="http://tech.ddvip.com/program/vc/windows/index.html">Windows系统</A> <A 
href="http://tech.ddvip.com/program/vc/file/index.html">文件</A> <A 
href="http://tech.ddvip.com/program/vc/comnet/index.html">COM/.NET</A> <A 
href="http://tech.ddvip.com/program/vc/network/index.html">网络通信</A> <A 
href="http://tech.ddvip.com/program/vc/integrated/index.html">综合</A> <A 
href="http://tech.ddvip.com/program/softjeer/index.html">软件工程</A> </DIV></DIV>
<DIV class=tlad id=tech_content_tl></DIV><!-- 内容部分 -->
<DIV class=content>
<DIV class=location><A href="http://www.ddvip.com/" target=_balnk>豆豆网</A> &gt; 
<A href="http://tech.ddvip.com/index.html">技术应用</A> &gt; <A 
href="http://tech.ddvip.com/program/index.html">程序设计</A> &gt; <A 
href="http://tech.ddvip.com/program/vc/index.html">VC</A> &gt; <A 
href="http://tech.ddvip.com/program/vc/network/index.html">VC网络通信编程</A> &gt; 正文 
</DIV>
<DIV class=content_left>
<DIV class=article>
<DIV class=article_title>
<H1>一种基于局域网的点对点语音通信</H1>
<DIV class=title_bottom>
<SCRIPT language=javascript 
src="一种基于局域网的点对点语音通信(3) - 语音通信 - 技术应用 - 豆豆网.files/title_bottom.js"></SCRIPT>
</DIV>
<P><A href="http://www.ddvip.com/">豆豆网</A> &nbsp;&nbsp;<A 
href="http://tech.ddvip.com/">技术应用频道</A>&nbsp;&nbsp;&nbsp;2006年04月07日 
&nbsp;&nbsp;&nbsp;<A href="http://club.ddvip.com/">社区交流</A></P></DIV>
<DIV class=article_content>
<DIV class=title_bottom_cpr>
<SCRIPT 
src="一种基于局域网的点对点语音通信(3) - 语音通信 - 技术应用 - 豆豆网.files/ad_title_bottom.js"></SCRIPT>
</DIV><!--ID="929"-->
<DIV class=searchhot>关键字: <A href="http://tech.ddvip.com/search.php?key=TCP" 
target=_blank>TCP</A> <A href="http://tech.ddvip.com/search.php?key=模拟器" 
target=_blank>模拟器</A> <A href="http://tech.ddvip.com/search.php?key=串口" 
target=_blank>串口</A> <A href="http://tech.ddvip.com/search.php?key=Web应用程序" 
target=_blank>Web应用程序</A> <A href="http://tech.ddvip.com/search.php?key=.NET" 
target=_blank>.NET</A> <A href="http://tech.ddvip.com/search.php?key=串口编程" 
target=_blank>串口编程</A> </DIV>
<DIV class=article_z>
<H2>本文详细介绍一种基于局域网的点对点语音通信 </H2></DIV>
<DIV class=article_ad>
<SCRIPT language=javascript src=""></SCRIPT>
</DIV>
<DIV class=article_c id=fontsize>
<P>  ④再次用waveInOpen(...) 和waveOutOpen(...)分别调用CALLBACK_WINDOW参数打开波形输入设备;</P>
<P>  ⑤分别给音频数据块和音频数据缓冲区分配、锁定全局内存;</P>
<P>  ⑥初始化音频数据块结构各成员变量,主要是将每个缓冲区指针赋给对应数据块结构中的缓冲区指针变量lpData;调用waveInPrepareHeader(...)和waveInAddBuffer(...)将音频数据块赋给输入设备驱动程序;</P>
<P>  ⑦调用waveInStart(...)函数开始录音。</P>
<P>  2.消息操作</P>
<P>  录音开始后,每当有采样数据填满数据块后,设备驱动程序就会发消息MM_WIM_DATA给用户窗口,相应的消息回调函数OnMmWimData(...)对数据块中的采样数据进行处理,然后就可以发送给输出设备进行回放,每当一个音频数据块播放完毕,设备驱动程序又会发出消息MM_WOM_DONE,相应的消息回调函数 
OnMmWomDone(...)记录音频数据并经必要准备后重新发送给输入设备,以准备接收后续的采样数据。这样,最初为输入设备准备的音频数据块就在消息的控制下,在输入、输出设备间循环使用,无需人为控制实现了实时采集、处理和播放。</P>
<P>  当结束通话时要关闭音频输入设备,这时音频设备驱动程序会发送MM_WIM_CLOSE消息,可在相应的消息函数OnMmWimClose(..)中清除赋给输入、输出设备的音频数据块。</P>
<P>  二、基于TCP协议的点对点话音传输</P>
<P>  对于声音的传送和接收主要是采用面向连接的TCP协议,并用Windows Socket进行网络编程实现,但首先要将发送和接收的函数接口放在 
OnMmWimData(...)函数中,这样才能做到采集数据块填满后被发送,接收的数据收到后被播放。 Windows 
Socket对于从事过网络编程的人来说应该不陌生,因为我们要实现点对点通信,所以得把客户和服务器模式融合为一种模式,让服务器可以做客户,客户也可以做服务器,从而使双方都有呼叫对方和接受对方呼叫的能力,这只需增加一个监听Socket就行了。一旦呼叫连接建立成功,便在两个点之间建立了一个数据流,即使双方不讲话,每个点也在不停地收、发数据,一方有话音自然就随着这个数据流传给了对方,所以关键的问题就是怎样读取话音数据流,因为TCP提供的流式服务是不保证边界的,当发送方想一次发送 
4000个字节时,调用语句Send(sBuffer,4000),并不能保证一定能发送出4000个字节;同样,接收方准备一次接收发过来的数据,调用语句Receive(rBuffer,4000),也不能保证一定能接收4000个字节,因此实际一次发送和接收的字节数会是1到4000中的任何一个值,最坏的情况是只有1个字节。相反,如果用Send函数连续发送少量数据,比如一次发送400个字节,连续发送10次,接收方用Receive函数可能一次就把这4000个字节都接收下来了,而为了实现播放,我们希望调用一次发送函数就能把缓冲区大小的话音数据发送出去,调用一次接收函数就能把对方一次发送的话音数据准确接收下来,以便进行播放,所以一种比较简单实用的办法,就是利用TCP协议发送数据时为每个数据包加个标志头:</P></DIV><!-- 分页 -->
<DIV class=page><A 
href="http://tech.ddvip.com/2006-04/11443514404025_2.html">上一页</A><A 
href="http://tech.ddvip.com/2006-04/11443514404025.html">1</A><A 
href="http://tech.ddvip.com/2006-04/11443514404025_2.html">2</A><SPAN 
class=current>3</SPAN><A 
href="http://tech.ddvip.com/2006-04/11443514404025_4.html">4</A><A 
href="http://tech.ddvip.com/2006-04/11443514404025_4.html">下一页</A></DIV><!-- 分页end -->
<P 
style="PADDING-RIGHT: 4px; FONT-SIZE: 12px; COLOR: #000000; TEXT-ALIGN: right">责编:豆豆技术应用</P>
<DIV id=art_content_end_468x60>
<SCRIPT src=""></SCRIPT>
</DIV>
<DIV class=realated_search>点击搜索更多"<A 
href="http://tech.ddvip.com/search.php?key=语音通信" 
target=_blank>语音通信</A>"相关信息</DIV></DIV>
<DIV class=related>
<DIV class=relatedtop>与“一种基于局域网的点对点语音通信”相关的文章</DIV>
<UL>
  <LI><A 
  href="http://tech.ddvip.com/2006-12/116628406415296.html">一种数字语音通信系统的DSP实现</A> 
  </LI>
  <LI><A 
  href="http://tech.ddvip.com/2006-12/116624538815096.html">IP语音通信:激活企业网应用</A> 
  </LI>
  <LI><A 
  href="http://tech.ddvip.com/2006-12/116619654415070.html">IP语音通信实现真正融合</A> 
  </LI>
  <LI><A 
  href="http://tech.ddvip.com/2006-12/116619437515047.html">IP语音通信:不仅仅是IP语音通话</A> 
  </LI>
  <LI><A 
  href="http://tech.ddvip.com/2006-12/116618806914993.html">IP语音通信:通信网络的未来</A> 
  </LI>
  <LI><A 
  href="http://tech.ddvip.com/2006-12/116616990414885.html">远距离无中继有线语音通信系统</A> 
  </LI>
  <LI><A 
  href="http://tech.ddvip.com/2006-12/116608135714644.html">下一代Internet中语音通信的QoS</A> 
  </LI>
  <LI><A href="http://tech.ddvip.com/2006-04/11443564804073.html">实时语音通信的实现</A> 
  </LI></UL></DIV>
<DIV class=clear></DIV>
<DIV class=related>
<DIV class=relatedtop>本栏目更新</DIV>
<UL>
  <LI><A href="http://tech.ddvip.com/2007-08/118640724530987.html">自定义ARP</A> 
  </LI>
  <LI><A 
  href="http://tech.ddvip.com/2007-08/118640712430986.html">TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞</A> 
  </LI>
  <LI><A 
  href="http://tech.ddvip.com/2007-05/117889311924135.html">WM5.0模拟器用AS来使用PC机的网络</A> 
  </LI>
  <LI><A href="http://tech.ddvip.com/2007-04/117654055322723.html">串口转TCP/IP 
  实用程序</A> </LI>
  <LI><A href="http://tech.ddvip.com/2007-03/117519184122338.html">用 Visual 
  C++创建的高性能的Web应用程序和XML Web 服务</A> </LI>
  <LI><A href="http://tech.ddvip.com/2007-03/117519139222337.html">从 Managed 
  Extensions for C++ 中使用 .NET My Services</A> </LI>
  <LI><A 
  href="http://tech.ddvip.com/2007-03/117475460922004.html">深入浅出VC++串口编程之短信应用开发</A> 
  </LI>
  <LI><A 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -