用C编写一个简单的voip应用程序

时间:2011-10-14 16:49:08

标签: c voip sip

我想开始编写一个简单的Voip应用程序,它将帮助我与我的一个朋友交谈。喜欢Skyp。

我搜索互联网并找到了一些有用的链接,例如this

看起来不错。你说什么?

哦,我忘了说我想用C写这个应用程序。你的意见是什么?你更喜欢这项工作的其他语言吗?是个不错的选择?

如果有人试过这样的话,请告诉我你的经历。 如果有一个好的教程,使用什么语言和任何其他有用的信息,如何启动。

感谢您的时间。

1 个答案:

答案 0 :(得分:10)

好的,写一个简单的VOIP程序作为学习经验当然是一个很好的理由。

首先,您应该选择合适的音频编解码器并学会使用它。我建议SPEEX

其次,您需要决定如何通过网络发送编码数据。一个简单的TCP套接字可以工作,至少有正确的选项(我在这里特别考虑TCP_NODELAY),但大多数VOIP应用程序似乎使用UDP直接传输数据包,交易可靠性提高效率。所以你应该学习如何设置和使用UDP套接字。

当然,您还需要学习如何阅读和播放音频。详细信息取决于您使用的语言和平台。

一旦掌握了所有这些,就应该非常简单。从麦克风读取音频,对其进行编码,通过网络发送,从网络读取传入数据,解码,播放。 当然,你已经同时做了好几件事 - 如果你的程序在等待可能会或可能不会到达的传入数据时停止发出声音,那就没有用了。

处理此问题的一种方法是将程序拆分为两个线程:一个用于监听和传输,另一个用于接收和回放。另一种解决方案是使用非阻塞I / O和事件驱动编程来处理来自多个源的数据。此选项的一个可能的优点是,它可以更容易地实现电话会议,您可以从多个人发送和接收音频。

当然,我自己从未尝试过,所以我真的只是在这里猜测。