【问题标题】:Peer 2 Peer call using PJSIP and PJSUAPeer 2 使用 PJSIP 和 PJSUA 的对等呼叫
【发布时间】:2012-01-02 21:57:58
【问题描述】:

我仍在学习 SIP 及其所有协议,特别是尝试将 PJSIP 集成到 iPhone 应用程序中以进行 p2p 呼叫。 我有一个关于使用 PJSUA 的对等 2 对等连接的问题。我能够 通过直接使用 URI 调用来完美地调用本地网络上的其他客户端:

  • sip:192...*:5060

我很好奇这是否适用 直接调用不在本地的其他 SIP URI 不使用服务器配置的网络 - 如果不是这种方式,是否有另一种方式在不使用服务器配置的情况下进行 p2p 调用?

提前致谢,

【问题讨论】:

  • 蠕虫,可以,打开。您可能应该去阅读有关 SIP 以及媒体流如何工作的信息。然后你就会明白他们为什么发明 STUN & TURN 并意识到为什么它是一大堆蠕虫。

标签: iphone ios cocos2d-iphone sip pjsip


【解决方案1】:

作为一般原则,您可以在没有服务器配置的情况下进行调用,但有些东西需要配置。正如 mattjgalloway 在您问题下方的 cmets 中指出的那样,最可靠的解决方案是涉及ICE 的蠕虫罐,它为 STUN 之类的东西提供了一种“伞”协议。

上次我touched this issue 时,我要求我不能使用基于 Internet 的 SIP 服务器来提供帮助。我提出了各种注册表的想法:您的客户可以定义一堆具有特定路由要求的“地址空间”。对于 LAN 中的 SIP URI,您无需定义路由;对于您公司的 VPN 访问网络中的 URI,您定义一个通过您的 VPN 连接的路由;对于您通过 Internet 路由器定义路由的所有其他内容。

通过“定义路由”,我的意思是当您调用某个特定地址空间中的 URI 时,您会将哪些 IP 存储到 Contact 标头中,您可能需要哪些 Route 标头,等等。

于是,拨打电话的流程就变成了:

  1. 在地址空间集中查找匹配项。
  2. 询问地址空间以获取合适的位以使 INVITE 有效(适当的联系人标头详细信息、路由标头等)
  3. 构造一个普通的 INVITE,根据上一步的需要进行变异。
  4. 正常发送邀请。

这基本上以手动管理的形式复制了 ICE 提供给您的一半。 “一半”,因为这样可以确保一个 SIP 代理可以进行呼叫,这样 SIP 路由就可以正常工作。缺少的一半是您在某处仍然需要某种注册商,并且您的联系人列表中的每个代理都需要进行必要的设置才能接听来电。 (如果代理位于 NATting 互联网路由器后面,则路由器需要运行 SIP 代理,或将端口 5060、5061 转发到特定机器(可能是代理,或为 LAN 代理提供服务的代理)。

确实是一大罐虫子。

【讨论】:

  • 如果我理解有问题,请发表评论。因此,在阅读了此答案和 mattjgalloway 评论后,调用时需要修复路线。通过 IP 网络进行通信时,可能会更改 IP 地址。 STUN 或 TURN & ICE 提供了修复此 ip 更改的方法,并为我们提供了两个对等方的稳定路由。因此 SIP 可以在同一地址上与 INVITE 发起会话并修改或破坏会话。 RTP 数据包可以在已知路由上进行交换。对吗?
【解决方案2】:

基本问题是解决在互联网上的任何地方获取传输端口以进行多媒体流量的问题。 许多公司/专家都试图解决这种情况。一种可能的出路是购买一个域并使用 YATE 或 Asterisk 在可从 Internet 访问的地址上设置一个基本注册商,并将其配置为根据需要也使用 ICE。两端的iphone应用程序可以在启动时自动注册到它。然后进行 P2P 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多