Android SIP与直接TCP套接字

Android SIP与直接TCP套接字,android,tcp,sip,rtp,Android,Tcp,Sip,Rtp,我正在为Android实现一个实时多用户语音传输应用程序。 我已经读到,作为一个标准,RTP数据包被封装到SIP中,然后发送到目的地。这样做的好处是什么 我的想法是使用服务器,只是从节点和打开的套接字接收控制消息。所有这些节点都将在一个组中。然后,我发送每个节点的IP地址,这样单个发送方就可以将其数据包直接多播到目的地 这里有致命的缺陷吗?我不关心耗电量 SIP如何做得更好?还是这样 感谢SIP或会话启动协议是专门为解决您试图解决的问题而设计的协议。一般来说,你应该重复使用而不是重新发明轮子的原

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

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

这里有致命的缺陷吗?我不关心耗电量 SIP如何做得更好?还是这样


感谢

SIP或会话启动协议是专门为解决您试图解决的问题而设计的协议。一般来说,你应该重复使用而不是重新发明轮子的原因是,其他人已经研究了相同的问题,并且作为一个集体,想必已经想出了一个比作为一个人更好的解决方案。当然,这并不总是正确的,但总的来说是正确的

如果您想了解SIP,您可以学习,或者从开始,如果您想快速概述的话

这就是说,如果您不需要一个完整的、经过仔细测试的协议的开销,您可以自己制定协议,但要确保在做出决策时,您知道自己在做什么,并且有充分的理由这样做

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

RTP没有封装到SIP数据包中。SIP是一种信令协议。RTP是一种媒体流协议。SIP用于协商、设置和中断媒体流。 TCP是媒体RTP数据包的可怕选择;从你的文章中不清楚你是否在暗示。 多播不太可能适用于许多网络路径/收件人。 路由器在接收数据时玩得很开心;在开放网络上与用户打交道需要的不仅仅是SIP。参见晕眩、转弯、ICE、UPnP等。
在最简单的系统中,您可以通过UDP通过RTP使用语音数据包

但您无法关闭音频,必须事先知道IP地址、端口号、编解码器类型及其特性

从过于简单的角度来看,SIP是一种实现以下目的的方法: 1.从URL查找另一个端点的ip地址。可能需要晕眩、转身、冰等 2.就使用哪种编解码器及其选项达成一致

SIP的内容远不止这些,您可能希望根据自己编写的内容研究SIP的会议功能

您可以编写自己的信令协议,如果这是一个学校项目,那就可以了


但是,如果你正在做一个商业项目,请记住,电话的作用远不止于表面。原来的SIP规范经过了很大的修改,现在是一个RFC集群,仍在修改和添加到其中。我建议你利用这项工作,而不是重复别人犯过的错误。

那么sip有什么意义呢?我只需要一个套接字连接,从我的节点连接到服务器。一旦我收到地址,我可以开始我的直接rtp数据包传输。即使一个节点断了,我也不在乎。。。我只想测试一个接入点中的几个节点。。所以,不要认为性能会有太大差异。。。是吗?套接字很好,但是您需要考虑NAT遍历问题——特别是RTP方面的问题。为此,使用类似SIP的东西意味着它将更容易管理,因为那里已经存在Stunt、TURN、ICE等解决方案,您可以从第三方随时获得这些解决方案。同样的逻辑也适用于其他功能,如多点支持、安全性等。SIP的要点是,它是一个已经建立的协议,用于执行您尝试执行的操作。即使您最初只需要SIP功能的一小部分,您仍然可以从实现部分SIP支持作为您的信令协议中获益。SIP通常通过UDP检查voip服务和ATA运行。。。;微软要求SIPoverTCP实际上我考虑的是TLS。