SIP与直接TCP套接字

时间:2011-11-01 15:46:13

标签: android tcp sip rtp

我正在为Android实施实时 - 多用户语音传输应用程序。 我已经读过,作为标准 - RTP数据包被封装到SIP中,然后被发送到目的地。这样做有什么好处?

我的想法是使用服务器,只是为了从节点和打开的套接字接收控制消息。所有这些节点都在一组中。然后,我发送每个节点的IP地址,以便单个发送者可以将其数据包直接多播到目的地。

这里有致命的缺陷吗? (我不关心功耗) SIP如何做得更好?或者是吗?

由于

3 个答案:

答案 0 :(得分:3)

  • RTP未“封装到SIP数据包中”。 SIP是一种信令协议。 RTP是媒体流协议。 SIP用于协商和设置(以及拆除)媒体流。
  • TCP是媒体(RTP)数据包的可怕选择;如果你提出这个问题,你的写作并不清楚。
  • 多播不太适用于许多网络路径/收件人。
  • 路由器对传入的数据发挥快乐的地狱;你需要的不仅仅是SIP来处理开放网络上的用户。见STUN,TURN,ICE,UPnP等

答案 1 :(得分:2)

SIP或会话启动协议是专门用于解决您尝试解决的问题的协议。一般来说,你应该重用(而不是重新发明轮子)的原因是因为其他人研究了同样的问题,并且可能已经提出了一个更好的解决方案,作为一个集体组,而不是个人。当然,这并不总是正确的,但总的来说它是成立的!

如果您想了解SIP,可以学习RFC 3261 specification,或者如果您想快速了解,可以从Wikipedia entry开始。

话虽这么说,如果你不需要完整且经过仔细测试的协议的开销,你可以自己动手,但要确保当你做出决定时你知道你是什么重申并且有充分理由这样做。

SIP是一种通常在TCP上运行的信令协议(虽然不是必需的),如果你仔细观察它,你会发现它在许多方面与HTTP非常相似。就像HTTP一样,它可以传输大量的有效负载,而且它使用文本头,就像HTTP可以用来传输HTML,XML,纯文本或任意二进制有效负载。

答案 2 :(得分:0)

在最简单的系统中,您可以通过UDP上的RTP使用语音数据包。

但是您无法关闭音频,并且必须事先了解IP地址,端口号,编解码器类型及其特征。

在一个过于简单的视图中,SIP是一种方式: 1.从URL中查找另一个端点的IP地址。 (可能需要STUN,TURN,ICE等) 2.同意使用哪种编解码器及其选项

SIP还有很多,你可能想根据你写的内容调查SIP的会议功能。

您可以编写自己的信号协议,如果这是针对学校项目的,那就可以了。

但是,如果您正在进行商业项目,请记住,电话技术远远超出了人们的视线。最初的SIP规范进行了大幅修改,现在是一组仍在修改和添加的RFC。我建议你利用这项工作,而不是重新发明别人犯下的错误。