1:pjsip教程(一)之PJNATH简介

  2:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介

  3:pjsip教程(三)之ICE stream transport的使用

  4:pjsip文档(四)之ICE Session的使用方法

本文原文地址:http://www.pjsip.org/pjnath/docs/html/group__PJNATH__ICE__STREAM__TRANSPORT.htm#ga6fb7cfdde71523f9fce885fd5cad982d

学习使用 ICE stream transport

下面的步骤描述了怎样使用ICE session:

  • 首先初始化结构体: pj_ice_strans_cfg. 这个结构体中包含了ICE stream transport 的配置信息,其中就包括了SUTN以及TURN的配置信息.
  • 使用 pj_ice_strans_create()方法创建stream transport的实例. 该函数的成功调用还需要以下列出的重要的参数:
    • pj_ice_strans_cfg :主配置信息
    • components 的个数
    • 用于产生回调的结构体的实例:pj_ice_strans_cb .
  • 当调用函数pj_ice_strans_create()后,初始化的过程会在后台运行,该初始化过程主要是收集本地的候选地址,最后,当初始化完成,应用程序会在回调函数on_ice_complete 中返回
  • 当想要开启一个媒体流时(例如,想进行视频或语音电话),使用pj_ice_strans_init_ice()创建一个ICE session用于进行打洞.
  • 通常在两个客户端开始打洞之前,双方都需要知道对方的ICE信息(ICE信息,包括用户名,密码以及3组候选地址),那么可以使用下面的方法得到自己的ICE信息:
    • pj_ice_strans_get_ufrag_pwd()
    • pj_ice_strans_enum_cands()
    • pj_ice_strans_get_def_cand()
      应用程序需要将以上信息封装为SDP消息发送至对方.
  • 当应用程序收到远程客户端发来的ICE消息后,就可以开始ICE探测了。开始ICE探测需要调用pj_ice_strans_start_ice()方法.
  • 需要注意的是,PJNATH库不支持直接处理SDP消息,SDP消息的封装与拆解还需应用程序自己实现。
  • 一旦ICE的探测协商开始后,程序最终将会在回调函数on_ice_complete() 中返回。on_ice_complete() 属于结构体: pj_ice_strans_cb.
  • 应用程序在程序运行的任何时刻都能发送或者接受数据,但是ICE的stream transport 对象它能否发送数据,取决于它发送数据时候的状态。状态分为三种:1,探测协商之前,这种状态下可以发送数据,并且使用的是默认的地址;2,探测协商的过程中,此时不能发送数据;3,探测协商完成之后,这种状态下也可以发送数据,且发送数据的地址为探测成功的地址对!
  • 应用程序使用pj_ice_strans_sendto()发送数据,并在pj_ice_strans_cbon_rx_data()回调中返回.
  • 当需要结束媒体Session时,使用pj_ice_strans_stop_ice()回收ICE Session。

关于ICE stream transport,在单次媒体交互完成后,可以选择销毁ICE stream transport或保留它以备后用。保留ICE stream transport有利有弊,好处是减少下次会话时创建它的时间;坏处是应用程序需要与STUN
server以及relay server中相应的端口保活,这会无形中造成电量的损耗(consume
power), 而电量损耗的高低是移动设备应用的重要参考标准之一。

转载请注明:

  名称:pjsip教程(三)之ICE stream transport的使用

  作者:大雪先生

  链接:http://www.cnblogs.com/ishang/p/3413262.html

中文翻译:pjsip教程(三)之ICE stream transport的使用的更多相关文章

  1. 中文翻译:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介

    1:pjsip教程(一)之PJNATH简介 2:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介 3:pjsip教程(三)之ICE ...

  2. 《Entity Framework 6 Recipes》中文翻译 ---- 系列教程

    为了方便大家的阅读和学习,也是响应网友的建议,在这里为这个系列做一个目录.在目录开始这前,我先来回答之前遇到的几个问题. 1.为什么要学习EF? 这个问题很简单,项目需要.这不像学校,没人强迫你学习! ...

  3. JERSEY中文翻译(第三章、模块和依赖)

    Chapter 2 Modules and Dependencencies 2.1 Java SE 兼容 所有的Jersey组建都是基于Java6开发的,所以你的Java必须是Java6以上的版本才能 ...

  4. JERSEY中文翻译(第三章、JAX-RS Application, Resources and Sub-Resources)

    JAX-RS Application Resource and Sub-Resource 本章要介绍的是JAX-RS的核心概念——Resouce.Sub-Resource JAX-RS的2.0的jav ...

  5. 中文翻译:pjsip文档(四)之ICE Session的使用方法

    1:pjsip教程(一)之PJNATH简介 2:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介 3:pjsip教程(三)之ICE ...

  6. 中文翻译:pjsip教程(一)之PJNATH简介

    在学习pjsip的过程中,发现只是单单的阅读英文官方文档,对于里边概念的理解还是不够透彻,并且苦于pjsip没有发现全一点的中文版本,所以想尽自己所能为建设和谐社会而贡献一份力量,文中定会有所疏漏,希 ...

  7. 《Introduction to Tornado》中文翻译计划——第五章:异步Web服务

    http://www.pythoner.com/294.html 本文为<Introduction to Tornado>中文翻译,将在https://github.com/alioth3 ...

  8. Deep learning with Theano 官方中文教程(翻译)(三)——多层感知机(MLP)

    关于更多的http://deeplearning.net/tutorial/的翻译还有学习笔记会陆续整理传到博客. 供大家相互交流和学习,本人水平有限,若有各种大小错误,还请巨牛大牛小牛微牛们立马拍砖 ...

  9. PS网页设计教程——30个优秀的PS网页设计教程的中文翻译教程

    PS网页设计教程--30个优秀的PS网页设计教程的中文翻译教程   作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,"熟读唐诗三百首,不会作 ...

随机推荐

  1. JavaScript高级程序设计24.pdf

    Element类型 Element类型用于表现XML或HTML元素,提供对元素标签名.子节点及特性的访问,它具有以下特征 nodeType的值为1: nodeName的值为元素的标签名: nodeVa ...

  2. 为 Joomla 而生的 Kunena 论坛安装手册

    查看并下载最新版本Kunena论坛,或直接下载Kunena1.7.2.如果你打算在Joomla网站中安装一个论坛,可以考虑一下Kunena论坛组件,一个为Joomla而生的免费的开源论坛组件. 安装: ...

  3. HOST1PLUS 的 VPS 主機-絕佳的性能和特惠的價格

    HOST1PLUS 的 VPS 主機-絕佳的性能和特惠的價格 undefined Open Container Project undefined 80后美女董事长吴艳:嫁得好不一定比干得好容易 - ...

  4. nyoj 757 期末考试【优先队列+贪心】

    期末考试 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没 交作业就会扣 ...

  5. Prof UIS相关

    Prof UIS 一款国外的VC++仿XP系统风格的免费界面库控件,含有近20个应用实例,每一个都可以顺利编译,用它生成的菜单类似OFFICE菜单一样,比起传统的窗体视觉舒服多了,VC编程的朋友对照文 ...

  6. Windows操作系统的历史

    30 years ago Windows was first released, see how much it has changed回顾了Windows操作系统的历史. 1985, Windows ...

  7. find job

    处于找工作的状态... 优秀求职者的5个问题: 1.在刚进来2-3个月里,你希望我可以完成哪些工作? 2.公司的优秀员工共同特征是什么? 3.业余时间,公司的员工一般在干什么?

  8. Sysinternals Suite实用程序工具包

    Sysinternals Suite是微软出品的一套集成数十个绿色软件的实用程序工具包.就在2014年1月29日(官方日期),迎来了2014新版本 AccessChk为了确保创建安全的环境,Windo ...

  9. 基于物联网技术和RFID电子客票的铁路自己主动检票机

    前言: RFID电子客票具有检阅速度快.信息量大.安全性高和高速物理定位的独特优势,随着标准的统一和成本的减少,它在铁路上有着巨大的应用前景,同一时候鉴于车站对物联网化的需求,我们设想出新一代的检票机 ...

  10. Swipecards

    https://github.com/Diolor/Swipecards https://github.com/kikoso/Swipeable-Cards