我在用CAsyncSocket发送语音。我开了个线程来获取声音数据,调用Send函数来一直发送。在网络比较差的时候发送语音,连接会经常被断开,错误代码是10053。注意,只有在网络比较差,而且打开语音功能的时候才会碰到这个问题。
会不会是send buffer没有可用空间,而我又调用Send()导致这个问题?如果是,怎么获取send缓冲区剩余大小?获取缓冲区被填满时是否有事件触发?
还是因为发送数据超时引起Socket被关闭?如果是,如何让socket不会因为发送数据超时被关闭?
哪位大侠救我!
会不会是send buffer没有可用空间,而我又调用Send()导致这个问题?如果是,怎么获取send缓冲区剩余大小?获取缓冲区被填满时是否有事件触发?
还是因为发送数据超时引起Socket被关闭?如果是,如何让socket不会因为发送数据超时被关闭?
哪位大侠救我!
更改缓冲区大小可能没效果吧?因为我一收到声音数据就发送,如果发送速度不够的话,再大的缓冲区也会用完啊
fantiyu,一开始的错误就是WSAWOULDBLOCK...刚才没写清楚。
我想应该不是因为网络质量非常差才断开的,如果我不发送声音数据,就不会出现这种情况,一发送声音数据,几乎每次都出现,网络越差,出现得越快。
我想这种情况程序是可以控制的,只要控制数据的发送频率和数量应该就可以了。所以想知道什么时候必须丢弃一些数据。
但是有没有可能如果receive缓冲区满了,连接会被关掉哪?
也只能这样了。因为公司人手一个雅虎msn,我们的程序老重新连接,雅虎倒不会,因此认定我们程序有问题。晕啊,我们程序的server装在台湾啊。
各位有没有碰到雅虎msn或其他即时语音程序在网络很差的情况下连接被断开的情况?让俺心理平衡平衡。
这是我在csdn提的第一个问题,等下班前就结帖。
凡是没有send成功的用协议保证数据重发~~不过这样语音的及时性就不好了~~~你自己取舍吧