C#SIP堆栈/库

时间:2009-01-31 02:10:36

标签: c# voip sip

我正在寻找一个好的SIP库,用C#编写或提供C#包装器。不一定需要是免费的。有人用过什么好东西吗?

澄清一下,我说的是VoIP协议SIP。

我真的在寻找这个搜索的谷歌搜索。我想有人回来说“我们使用______,而且效果很好。”

为了进一步澄清,我正在寻找一个可以帮助我实现SIP代理服务器的库,而无需手动构建SIP数据包。我不是在寻找星号,freeswitch或任何其他的pbx软件。

我希望在C#中创建一个服务,它会等待SIP数据包并对它们做出响应,我想要一个可以处理大部分细节的库。

19 个答案:

答案 0 :(得分:22)

7年前我经历了类似的任务,但寻找嵌入式C版本。我查看了oSIP库。它完成了将SIP数据包转换为结构并返回的所有工作。

然而,文档中的一点与我相关。作者建议您熟悉SIP规范(RFC 3261)以有效地使用该库。在多次阅读规范之后,我最终编写了自己的解析器和调用控制应用程序。

请记住,SIP仍然是一个不断发展的标准。有一个活跃的SIPForum组正在开发SIPConnect 1.1以标准化SIP服务提供商(例如Vonage)和SIP-PBX之间的接口。还有一个名为BLISS的活动,用于定义在用户代理之间实现SIP功能的“最佳实践”。

互操作性很难。有数百个与SIP相关的RFC。不同的端点使用不同的端点,并且规范的解释并不总是兼容的。有几种不同的互操作性“测试事件(如SIPit),以确保您的实现与其他人一起工作。

无论您选择什么,请确保您对要实施的功能的规格有充分的了解。此外,规范和库将有助于数据包端,但您仍需要一个“呼叫控制”库(更高级别的“大脑”来决定如何处理SIP请求/响应)。除非您的应用程序纯粹是SIP代理,否则您还需要一个媒体层来处理音频。

尽管如此,一些互联网电话服务提供商(ITSP)已经使用SIP Express Router作为其服务的前端代理。它非常易于配置,兼容性成功率很高。

答案 1 :(得分:8)

答案 2 :(得分:8)

恕我直言,迄今为止最好的筹码之一是PJSIP。它是用非常便携的C编写的,并且有许多包装器。这是一个非常有效的.NET wrapper

答案 3 :(得分:5)

我们使用SIP.Net,对我们有效。
我们使用它来等待SIP数据包并保持SIP流程非常简单 请注意,有时其对象模型过于详细,因此产品本身非常灵活(如果您需要这样的灵活性)。但是,我们编写了一个更高级别的包装器(一种外观),只是为了让我们更容易。他们反响敏捷,但IMO的文件不够详细 您也可以查看nsip(只是链接,我自己没有尝试过)

答案 4 :(得分:5)

我的sipsorcery项目是另一种选择。它包含一个完全用C#编写的SIP堆栈。

答案 5 :(得分:4)

我需要这一段时间,最后编写了我自己的B2BUA(一个SIP代理,它也处理音频并充当对话双方的端点)。

SIP规范(和RTP)的问题在于它非常复杂,特别是你考虑了多年来为它做出的所有可选添加。每个人都以不同的方式实现它,所以如果你使用收缩包装软件,你可能会遇到特定手机或服务器的问题。

就我而言,我试图让Microsoft Speech Server与SIP终结者进行通信。 Microsoft对SIP规范有一个特别有创意的解释(最值得注意的例子是它们不支持UDP)。此外,一些VOIP网关不支持REFER用于监督传输,这对许多应用来说都是必需的。

其他答案中提供了一些不错的链接:我的建议是自己动手或者使用开源的东西,这样当你遇到SIP实现中不可避免的不兼容问题时,你可以根据需要进行调整。

答案 6 :(得分:3)

看起来这个CodeProject article可能是一个不错的起点。但是,我不相信它会处理媒体流。

答案 7 :(得分:3)

http://www.konnetic.com是一个相对较新的补充。完全管理。使用SIP和SDP所需的一切。他们没有像许多其他人一样选择标准中的低调水果。 同样好但与Microsoft绑定的是Microsoft Lync服务器。

答案 8 :(得分:2)

不确定你在这里寻找什么。您在寻找客户端VOIP应用程序还是服务器端?如果是后者,您可能想查看FreeSwitch。他们的一个功能是能够在Mono中编写扩展代码,它允许C#。寻找mod_mono支持。

FreeSwitch

答案 9 :(得分:2)

也许你想尝试lumisoft。完全用C#构建。完全开源和免费。 lumisoft

答案 10 :(得分:2)

尝试Voice Elements

它是一个.NET电话工具,他们有自己的SIP堆栈。使用C#或您选择的任何.NET语言。

答案 11 :(得分:2)

Konnetic为.NET开发提供完全托管的SIP组件。

他们的.NET SIP SDK可能是最全面的。

否则,Microsoft的Lync服务器附带了一个非常好的托管SIP库,可从以下网址获得:www.microsoft.com/en-us/lync/default.aspx

答案 12 :(得分:1)

LumiSoft.Net是一个非常好的C#SIP堆栈。它具有所有基本库,例如SIPRTPSDPDNS和许多其他库,可以非常轻松地构建健壮的SIP代理服务器或SIP客户端。

答案 13 :(得分:1)

我找到的最好的是VoIP Video SIP SDK它提供了高质量的视频

答案 14 :(得分:1)

过去,我使用过MS的Live Communications Server(认为是2003年)。相关的SDK非常糟糕。

现在有了新版本的Office Communications Server。我没有使用SDK开发,但看到一些非常酷的演示。

答案 15 :(得分:1)

我已经看过(不直接使用,刚刚审核过)一个使用Radware SIP堆栈的相当大且稳定的VOIP系统。非常好(即没有问题),我也没有发现任何安全问题......

我审核的系统是在C#中。

答案 16 :(得分:0)

LanScape:http://www.lanscapecorp.com/

  

所有LanScape VOIP产品包括   LanScape VOIP Media Engine™有   从“基础”设计到   支持所有版本的Microsoft   Windows®2000和XP最多和   包括最新版本   Windows Vista。

我也碰巧亲自知道它是C#友好的。

答案 17 :(得分:0)

这对我来说很有意思...... http://developers.inova.si/sipobjects/Default.aspx?tabid=92 - 它不是开源的,但它绝对是以.NET为中心的。它以Avaya为中心,因此可能不适合您的目的。

另请注意:http://www.codeplex.com/mysipswitch

答案 18 :(得分:-1)

了解Avaya DMCC。您可以在AvayaDev中注册并免费下载。 C#框架允许您利用AES和CM的所有pbx功能。您可以检查是否也支持SIP。