通过TCP的SIP+转换为UDP以与SIP电话通话



我在Ubuntu 12.04盒子上安装了linphone。一位同事想测试一款Windows SIP手机,他说,该手机使用TCP上的SIP而不是UDP。

我突然想到,我可以创建一个20美分的C++程序,该程序有两个线程,一个用于UDP端,另一个用于TCP端,它只需接收一个协议并将其发送给另一个。由于UDP部分将只在linux盒子上,我怀疑数据报与流之间是否存在任何问题,而且SIP无论如何都不是特别"流"

这行得通吗?还是有一些我不知道的潜在协议肮脏。通过TCP使用的SIP是否与通常通过UDP传输的SIP相同?有没有一个众所周知的C++解决方案?

我四处寻找可能的解决方案,socat是一种可能性,但它是GPL,这是为嵌入式OCO项目设计的。

欢迎提出任何其他意见或建议。

看起来linphone支持TCP上的SIP(这是RFC 3261强制要求的)。

http://www.linphone.org/eng/features/

是的,这是相同的SIP消息通过电线。

您最初问题的答案是,不,您不能将TCP SIP数据包"管道"传输到UDP套接字。SIP确实在Via报头中包括传输类型,该报头用于确定在其上传输响应的网络路径。除此之外,对于对话传输,您的SIP服务器还需要生成新的SIP请求,目的地是TCP客户端,它需要一些设置或机制来将这些请求发送到您的"管道",然后需要解析SIP请求以确定数据包需要发送到哪里。

总而言之,往好了说,这是一个非常脆弱的解决方案,往坏了说,它是一个相当破碎的解决方案。找到一个支持TCP的SIP服务器/客户端会更快、更容易,就像现在大多数服务器/客户端所做的那样,事实上,这似乎就是你所做的。

最新更新