SIP over TCP +转换为UDP与SIP电话通信

时间:2012-09-04 11:50:12

标签: c++ tcp udp sip

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

我认为我可以创建一个20美分的C ++程序,该程序有两个线程,一个用于UDP端,一个用于TCP端,它只接收一个协议并将其发送给另一个协议。由于UDP部分只在linux机器上,我怀疑数据报与流有什么问题,而且SIP并不是特别“流畅”。

这是否有效或是否存在一些我不知道的基本协议肮脏。通过TCP使用的SIP是否与通常通过UDP传输的SIP相同?有没有一个众所周知的C ++解决方案呢?

我一直在寻找可能的解决方案,而socat是可能的,但它是GPL,这是针对嵌入式OCO项目的。

非常欢迎任何其他建议或建议。

2 个答案:

答案 0 :(得分:2)

看起来linphone支持SIP over TCP(RFC 3261强制要求)。

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

是的,这是通过网络发送的相同SIP消息。

答案 1 :(得分:2)

原始问题的答案是,您不能将TCP SIP数据包“管道”到UDP套接字。 SIP确实包括Via头中的传输类型,用于确定传输响应的网络路径。除了对话内传输之外,您的SIP服务器还需要生成发往TCP客户端的新SIP请求,并且需要一些设置或机制来让它将这些请求发送到您的“管道”,然后需要解析SIP请求以确定需要发送数据包的位置。

总而言之,它最多只是一个非常脆弱的解决方案,最糟糕的是一个相当破碎的解决方案。找到支持TCP的SIP服务器/客户端会更加快速和容易,因为这些日子大多数都支持TCP,事实上这似乎是你已经完成的工作。