- 授权协议: GPL
- 开发语言: C/C++
- 操作系统: 跨平台
- 软件首页: http://www.pjsip.org/
- 软件文档: http://www.pjsip.org/docs.htm
软件介绍
PJSIP是一个开放源代码的SIP协议栈。它支持多种SIP的扩展功能,目前可说算是最流行的sip协议栈之一了。
下面列出其重要的几种优点:
代码层次非常清晰,从低级到高级都提供了很方便的接口供开发;
提供相当多的测试用例和一个基于pjsip开发的命令行UA程序供开发人员参考;
高度的可移殖性,只需简单的编译一次,它能够在多种平台上运行(所有Windows 系统列, Windows Mobile, Linux, 所有Unix 系列, MacOS X, RTEMS, Symbian OS, 等等)。
极小的内存需求,官方宣称编译后的库,完全实现SIP的功能只需要150K的内存空间,这使得PJISPi不仅仅是嵌入开发的理想平台,并且实用于那些内存运行于极小内存平台的应用,这也意味着极小的用户下载时间。
高效的性能,这意味着极小的CPU运算需求下能同时实现更多的通话。
支持多种SIP功能及扩展功能,多种SIP功能和扩展功能,例如多人会话,事件驱动框架,会话控制(presence),即时信息,电话传输,等等在库文件里得以实现。
丰富的文档资料,对于软件开发人员来说,文档资料从来都是多多益善,因此我们要求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()则可以实现毫秒级别的计时)
Building Social Web Applications
Gavin Bell / O'Reilly Media / 2009-10-1 / USD 34.99
Building a social web application that attracts and retains regular visitors, and gets them to interact, isn't easy to do. This book walks you through the tough questions you'll face if you're to crea......一起来看看 《Building Social Web Applications》 这本书的介绍吧!
