📄 subject_37023.htm
字号:
<p>
序号:37023 发表者:娉繁 发表日期:2003-04-20 23:52:01
<br>主题:socket中的音频数据的传输????
<br>内容:?<BR><BR> 请问:<BR> 用lpdata=(LPSTR)malloc(11250*3);申请了缓冲,并存入了音频数据,如何用socket把这个缓冲<BR> 中的数据传走??
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:FirstHoward 回复日期:2003-05-10 22:56:20
<br>内容:我建议你采用OverLapped方式进行数据发送,具体而言:<BR><BR>1. Overlapped + 事件<BR><BR> 你可以先在WSABUF.len = 4 * 1024,也就是说,一次发送4K,WSASend()后,WSAWaitForMultipleEvents()等待发送成功,然后调用WSAGetOverlappedResult(),得到上次发送的字节数目,然后发送缓冲字节 += 发送字节数目, 判断是否发送完毕。如果没有,缓冲指针移动发送缓冲字节,然后在调用WSASend()。如此进行循环,<BR> 对于事件的返回值,要判断是否出现错误,并用WSAGetLastError()判断是否网络物理中断或者是Socket disconnected.<BR><BR>2. OverLapped + 完成回调<BR><BR> 第一次发送4K的时候,在WSASend()中指定回调函数。<BR> 回调函数中进行指针的判断,然后再次WSASend()。<BR><BR>如果你是一个商业程序,我建议你采用overlapped模式;如果还是一个server端,最好采用完成端口模式;<BR><BR>如果是自己写地例子,还是采用send()简单一些好<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:娉繁 回复日期:2003-05-20 11:31:02
<br>内容:谢谢你的回复!<BR>最后你有提到,“如果你是一个商业程序,我建议你采用overlapped模式;如果还是一个server端,最好采用完成端口模式;如果是自己写地例子,还是采用send()简单一些好”,能不能说一下,具体在实现的质量上有什么区别?<BR><BR>另外,音频数据的传输,是不是必须经过协议(如:G.729a等)的压缩和解压?各种协议有何不同??<BR><BR>我也是初学,能不能解释一下“完成端口模式”??<BR><BR>谢了!!^-^
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:FirstHoward 回复日期:2003-05-20 21:52:21
<br>内容:overlapped模式,可以实现异步操作。具体讲,你的程序在每次调用WSASend()后,程序不会堵塞进入等待模式,这样你可以进行其他的操作。<BR><BR>而且每次大量数据的发送,socket底层缓冲区也来不及处理,次数多了,堵塞(空等待)更加厉害。你自己的指针处理也越来越凌乱(send模式)。相反,科学的、有规律地每次发送少量的数据,程序和socket都可以高效率的处理。你如果做过单片机的设计开发,应该明白这种道理的。<BR><BR>Server端采用完成端口模式的话,可以处理海量的socket连接(上百甚至上千)。我是从书上看到的,自己也没有做过实际的操作。<BR><BR>数据的压缩我没有研究过,我只知道原则是尽量缩短位数,不再用一般的8位表示一个字符。但是数据的压缩是肯定需要的。我从网上down过一个压缩的类代码,你如果需要的话我可以给你。我用来传输图象的。<BR><BR>建议你阅读<windows 网络编程>第二版,举的例子比第一版好多了。不过还是自己编写后,进行step调试,你才可以豁然开朗的。<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:娉繁 回复日期:2003-05-22 15:33:12
<br>内容:我是快毕业的学生,是第一次做比较大的程序,一切都在摸索之中,还请您多指教!<BR><BR>我下一步也要做视频的传输,看来你也做过,你能把你说的那个代码发给我吗?我的地址是:pangchao5074679@yahoo.com.cn,thank you very much!<BR><BR>关于您说的:<windows 网络编程>第二版,由电子版的吗?是哪个出版社的呢?<BR><BR>:),祝健康快乐!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:FirstHoward 回复日期:2003-05-27 21:18:32
<br>内容:抱歉啊,我没有买,只是在书店看了一会,实在不知道哪个出版社的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:娉繁 回复日期:2003-05-27 21:35:55
<br>内容:没关系,我自己找吧,一定能找到的!呵呵<BR><BR>“我下一步也要做视频的传输,看来你也做过,你能把你说的那个代码发给我吗?我的地址是:pangchao5074679@yahoo.com.cn,thank you very much!“,如何?你直说就行了,如果有困难不发也没关系的,不过,告诉我一声好吗?不然我老惦记着,呵呵<BR><BR>谢了!<BR><BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -