语音聊天程序设计中遇到了一些问题,求大侠 本帖最后由 oyljerry 于 2012-04-02 10:59:53 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用TCP并不合适。语音丢掉几个包,依然可以听。而如果等待TCP重传,则需要忍受延迟。因此一般都是用UDP(RTP)的。阻塞意味着一个线程需要等待,直到一个socket上特定事件发生才继续走。如果socket很多,则不适合n个线程等待。非阻塞的socket效率并不一定高。比如recv,没有收到东西,如果又需要循环去继续收,那还不如阻塞。只不过非阻塞的socket,没收到东西,你也可以先干点别的事再来收。你要考虑的是IO模型:select模型 WSAAsyncSelect模型 WSAEventSelect模型 Overlapped I/O 事件通知模型 Overlapped I/O 完成例程模型 IOCP模型 对这些模型都不怎么了解,除了select模型之前看过之外,但是现在又忘记了.现在最怕的就是线程间同步的问题,对于UDP(RTP)只找到一些开源的库,现在估计是来不及去学这些开源的库怎么用了.目前已经改成了UDP,感觉好了很多,但是偶尔会错,有可能是在线程同步时出了问题,你能大致跟我讲一下那些模型吗?谢谢.. 实验室的东西用啥都行,忽悠完老师就OK了UDP可能不适合你,TCP更合适,不用管阻塞好还是非阻塞 ,用自己熟悉的模型就好。 谢谢大家!大家都说4楼ndy_w (carpe diem)说得不错,有点深入,虽然我看不懂..不过还是让我了解了不少东西.算了,结帖吧! VC画柱状图、饼状图的问题 为什么我的vs2005在调试CDC有关的程序时,特别卡。好象有hook函数拦截一样 loki boost log4cxx 这几个是用来干么的? 有谁知道哪有VC++2005教程买啊? 程序检测到被钩住,怎么卸掉这个钩子? 怎么知道我得程序调用了那些dll文件? 神呀,救救我吧! 一个进程的子线程能否使用在进程中打开的对象(也就是使用对象的句柄)? 如何获取本地机的逻辑卷及物理存储列表? 超级高手请进! 怎么样可以树形结构的实现 没事弄的个小游戏(联想A520 escape)
阻塞意味着一个线程需要等待,直到一个socket上特定事件发生才继续走。如果socket很多,则不适合n个线程等待。
非阻塞的socket效率并不一定高。比如recv,没有收到东西,如果又需要循环去继续收,那还不如阻塞。只不过非阻塞的socket,没收到东西,你也可以先干点别的事再来收。
你要考虑的是IO模型:
select模型
WSAAsyncSelect模型
WSAEventSelect模型
Overlapped I/O 事件通知模型
Overlapped I/O 完成例程模型
IOCP模型
对这些模型都不怎么了解,除了select模型之前看过之外,但是现在又忘记了.现在最怕的就是线程间同步的问题,对于UDP(RTP)只找到一些开源的库,现在估计是来不及去学这些开源的库怎么用了.目前已经改成了UDP,感觉好了很多,但是偶尔会错,有可能是在线程同步时出了问题,你能大致跟我讲一下那些模型吗?谢谢..
UDP可能不适合你,TCP更合适,不用管阻塞好还是
非阻塞 ,用自己熟悉的模型就好。
谢谢大家!大家都说4楼ndy_w (carpe diem)说得不错,有点深入,虽然我看不懂..不过还是让我了解了不少东西.算了,结帖吧!