开源的SIP协议栈 PJSIP

PJSIP是一个开放源代码的SIP协议栈。它支持多种SIP的扩展功能,目前可说算是最流行的sip协议栈之一了。

下面列出其重要的几种优点:

1)代码层次非常清晰,从低级到高级都提供了很方便的接口供开发;

2)提供相当多的测试用例和一个基于pjsip开发的命令行UA程序供开发人员参考;
3).高度的可移殖性
只需简单的编译一次,它能够在多种平台上运行(所有Windows 系统列, Windows Mobile, Linux, 所有Unix 系列, MacOS X, RTEMS, Symbian OS, 等等)。
4).极小的内存需求

官方宣称编译后的库,完全实现SIP的功能只需要150K的内存空间,这使得PJISPi不仅仅是嵌入开发的理想平台,并且实用于那些内存运行于极小内存平台的应用,这也意味着极小的用户下载时间。

5).高效的性能
这意味着极小的CPU运算需求下能同时实现更多的通话。
6).支持多种SIP功能及扩展功能
多种SIP功能和扩展功能,例如多人会话,事件驱动框架,会话控制(presence),即时信息,电话传输,等等在库文件里得以实现。
7).丰富的文档资料
对于软件开发人员来说,文档资料从来都是多多益善,因此我们要求PJSIP开发人员提供了大量的极有价值的文档资料供大家使用

其实说是PJSIP不是特别贴切,这个库实际上是几个部分组成的.
 1).PJSIP - Open Source SIP Stack[开源的SIP协议栈]
 
 2).PJMEDIA - Open Source Media Stack[开源的媒体栈]
 
 3).PJNATH - Open Source NAT Traversal Helper Library[开源的NAT-T辅助库]
 
 4).PJLIB-UTIL - Auxiliary Library[辅助工具库]
 
 5).PJLIB - Ultra Portable Base Framework Library[基础框架库]

PJLIB简介

 要理解好PJSIP,就不得不先说说PJLIB,PJLIB算的上是这个库中最基础的库,正是这个
库的优美实现,才让PJSIP变得如此优越。
 
 PJLIB提供了一系列特征,这是我们下面分析的重点,涉及到:
 1).非动态内存分配[No Dynamic Memory Allocations]
  实现了内存池,获取内存是从与分配的内存池中获取,高性能程序多会自己构造内存池
,后面我们会解释该内存池的使用以及基本的原理。根据作者的比较,是常规的 malloc(
)/free()函数的30倍。
  
 2).OS抽象[Operating System Abstraction]
  实现OS抽象的根本原因在与可移植性,毋庸置疑:).
  涉及到:
  a).线程[Threads.]
  b).线程本地存储[Thread Local Storage.]
  c).互斥[Mutexes.]
  d).信号灯[Semaphores.]
  e).原子变量[Atomic Variables.]
  f).临届区[Critical sections.]
  g).锁对象[Lock Objects.]
  h).事件对象[Event Object.]
  i).时间管理[Time Data Type and Manipulation.]
  j).高解析的时间戳[High Resolution Timestamp.]
  等等,这些我们后面分析代码时一一看来:)
  
 3).低层的网络相关IO[Low-Level Network I/O]
     这涉及到:
     a).Socket抽象[Socket Abstraction.]
     b).网络地址解析[Network Address Resolution.]
     c).实现针对Socket的select API[Socket select() API.]
    
 4).时间管理[Timer Management]
  这主要涉及到两个部分,一个时定时器的管理,还有就是时间解析的精度(举例说来,就是能精确到哪个时间等级,比如 POSIX sleep(),就只能以秒为单位,而使用select()则可以实现毫秒级别的计时) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卸载idea_IDEA 不为人知的 5 个骚技巧!真香!

来自公众号:Java中文社群工欲善其事,必先利其器,磊哥最近发现了几个特别棒的 IDEA“骚”技巧,已经迫不及待的想要分享给你了,快上车...1.快速补全行末分号使用快捷键 Shfit Ctrl Enter 轻松实现。2.自带的 HTTP 请求…

网格搜索支持向量机运行结束不了

from sklearn import svm, model_selection import pandas as pd import numpy as np #支持向量机主要调节的参数有:C、kernel、degree、gamma、coef0。 #C 默认 1.0正则化参数。 #kernel {‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’}, defaul…

Oracle高级SQL培训与讲解

1 With子句 1.1 学习目标 掌握with子句用法,并且了解with子句能够提高查询效率的原因。 1.2 With子句要点 1. with子句的返回结果存到用户的临时表空间中,只做一次查询,反复使用,提高效率。2. 如果定义了with子…

理解会话

一 会话的初始化 Session用于进行媒体流传送。当一方发出请求,而另外一方或多方接受请求并通过信令交互成功后才能建立会话。 一次呼叫只能建立一次会话,但可以建立多个对话(Dialog),因为接受请求的可能不止一个。 …

st语言 数组的常用方法_ST语言编程手册

ST语言编程手册目录1. ST基本原理.......................................................................................................... 61.1语言描述..........................................................................................................…

arcgis矢量之间的空白如何快速填充

填充之前 中间有空白处需要填充完整(前提时候得是一个图层,如果是两个图层就无法填充) 点击开始编辑 点击创建要素 点击自动完成面 开始绘制 绘制完成如下

Session、Dialog和Transaction的区别

会话(Session)跟SDP内信息相关。在SDP中,多媒体会话指的是一组的媒体发送方和接收方及媒体流从发送方流向接受方。会话是由SDP里的username, session id, network type, address type,和源处地址元素来确定的。只有当媒体协商成功后&#xff…

从委托而起(二)认识委托

新建一个控制台应用程序,这个程序的作用是为一个字符串改变样子,所以起个名字叫Costumeball吧.嘉宾(字符串)通过一个个化妆间(函数)变得漂漂亮亮或奇奇怪怪后一起唱歌跳舞.好享受.声明一个委托,委托一般出现在类之外,本例随便delegate void Prink(string str);创建与委托管理的…

argis中4波段影像变3波段

解决方法:波段合成 4波段影像属性 工具 结果

SIP结构

SIP结构 SIP单元: UAC、UAS、Stateful proxy、Statelessproxy和registrar五种。 SIP是分层结构,每层之间是相对独立的。如下 -------------------------------------------- | TransactionUser(TU) | …

python批量压缩图片

#coding:utf-8 from PIL import Image import os#图片压缩批处理 def compressImage(srcPath,dstPath):for filename in os.listdir(srcPath):#如果不存在目的目录则创建一个,保持层级结构if not os.path.exists(dstPath):os.makedirs(dstPath)#拼接完整的文件或文件…

idea怎么将本地文件和远程git对比_IDEA新建本地项目关联远程git仓库

现在远程git仓库创建一个repository,然后本地创建项目,最后进行关联。三板斧,打完收工。第一步、第二步地球人都知道,略过不表,第三步比较关键,举个例子:0、创建本地Git仓库:VCS -&g…

转:min(x,y)高效算法

命题:给定整数x,y,计算较小值m。 两个数的差异,在于他们的差,于是想到计算z x - y,我想也许可以利用这个中间值,利用一些巧妙的位运算求出,可是貌似还是比较困难。于是我打算重新理一下思路…

系统运维安全管理办法_运维安全管理系统-堡垒机

随着信息化的快速发展与普及,业务运行已于信息化系统密不可分,由于业务需求的不断拓展,信息化系统的建设也在不断深入与增长,企业的业务系统变得日益复杂,信息化系统俨然已经成为了业务运行保障的重中之重,…

asp.net 下载文件

//源文件名称 //提供下载的文件,不编码的话文件名会乱码 //private string fileName HttpContext.Current.Server.UrlEncode("规范.rar"); string fileName "D:\我的文档\Visual Studio 2010\WebSites\WebSite14\a00.zip"; …

SIP代理服务器(1)

SIP代理服务器分两种: 1)无状态代理服务器:简单的转发功能,通过请求信息来选择转发的目的和路由。消息一旦转发立即丢弃。 2)有状态代理服务器:记录到来的请求和发送的请求的信息(特别是事务状态…

arcgis坡度结果有误或z因子前有感叹号

在地理坐标系下我们做坡度的时候arcgis的z因子会出现感叹号 这样作出的效果如下 通常这样的效果是错误的 解决方法: 原理:应为在地理坐标系下xy的单位是度或者十进制的,就导致z与xy的测量单位不同,所有我们就需将DEM数据投影到投…

怎么修改提交git是的用户名_Git 修改用户名以及提交邮箱

问题背景:在已毕业师兄的电脑上提交自己的 Github 代码,(尽管有重新设置了 自己的SSH),但是 Github网站提交结果却显示师兄提交的:验证当前本地属性:怎么知道本地有设置?git config --local --list 看一眼。…

企业效益真的向好么?

根据最新消息,1至7月,全国公共财政收入66739.92亿元,同比增长30.5%。全国公共财政支出51385.06亿元,同比增长29.7%。财政部部长谢旭人昨日表示,财政收入增长较快,是经济运行总体良好及企业效益提高的综合反…

基于集成提升和 Bagging 的地下水潜力预测机器学习模型文件阅读

文章连接:Ensemble Boosting and Bagging Based Machine Learning Models for Groundwater Potential Prediction | SpringerLinkhttps://link.springer.com/article/10.1007/s11269-020-02704-3 一、研究区: Dezekord-Kamfiruz 流域是伊朗法尔斯省的一部分 二、方法: