Peer 2使用PJSIP和PJSUA进行对等呼叫

时间:2012-01-02 21:57:58

标签: iphone ios cocos2d-iphone sip pjsip

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

  • SIP:192 *:5060

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

提前感谢,

2 个答案:

答案 0 :(得分:1)

作为一般原则,您可以在没有服务器配置的情况下拨打电话,但某些需要进行配置。正如mattjgalloway在你的问题下面的评论中指出的那样,最强大的解决方案是一系列涉及ICE的蠕虫,它为STUN之类的东西提供了一种“伞状”协议。

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

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

因此,拨打电话的过程变为:

  1. 在地址空间集中查找匹配项。
  2. 询问地址空间以获取制作可行INVITE所需的合适位数(适当的联系人标题详细信息,路由标题等)
  3. 构建一个普通的INVITE,根据上一步的需要进行变异。
  4. 正常发送邀请。
  5. 这实际上以手动管理的形式再现了ICE给你的一半。 “一半”,因为这可以确保一个SIP代理可以进行呼叫,使SIP路由全部工作。缺少的一半是你仍需要某种注册商,联系人列表中的每个代理都需要有必要的设置来接收来电。 (如果代理位于NATting互联网路由器后面,则路由器需要运行SIP代理,或将端口5060,5061转发到特定计算机(可能是代理,或代理LAN代理的代理)。

    确实,这是一大堆蠕虫。

答案 1 :(得分:1)

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