pjsip的编译及简单使用

1.下载
下载地址:http://www.pjsip.org/download.htm
我下载的是pjproject-1.12.zip

2.编译
将下载的文件解压后,目录下有pjproject-vs8.sln,可以直接使用vs2005打开,
目录下的readme.txt文件中有编译说明,关于windows下的注意点如下:
  Building Win32 Target with Microsoft Visual Studio
          Generally we can just do these steps:

         1. Visual Studio 6: open pjproject.dsw workspace,
         2. Visual Studio 2005: open pjproject-vs8.sln solution,
         3. Create an empty pjlib/include/pj/config_site.h, and
         4. build the pjsua application.
新建一个空文件pjlib/include/pj/config_site.h后,编译pjsua工程出现以下错误:
1>LINK : fatal error LNK1104: cannot open file 'dsound.lib'

看名字dsound.lib像是directX里面的东本,试着在Microsoft DirectX 9.0 SDK (Summer 2004)/lib中查找(DirectX SDK需要单独下载),果然找到了,将路径添加进去后,编译通过了。在pjproject-1.12\pjsip-apps\bin目录中,可以看到编译好的程序 pjsua-i386-Win32-vc8-Debug.exe

3.测试
似乎不能在一台机子上打开两个客户端,所以借助虚拟机。分别在在p1、p2上运行程序,根据提示信息,拨打电话过程如下:
1).在p1中输入"m",接着输入sip:192.168.9.81(p2的ip)
2).p2中会打印出接听提示信息,输入"a"接听,再输入200作为应答
3).现在连接建立成功了,p2输入"h"挂电话
截个图:


4.用Wireshark截获的sip命令


 

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

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

相关文章

innodb 悲观锁 乐观锁_mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁

mysql乐观锁、悲观锁、共享锁、排它锁、行锁、表锁乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现…

IOS之导航控制器与表视图

7.1 导航控制器 7.2 创建第一级控制器 7.3 第一个二级控制器 7.4 第一个三级控制器 7.5 第二个二级表控制器 7.6 第三个二级表控制器 7.7 第四个二级表控制器 7.8 第五个二级表视图控制器 7.8 第六个二级表视图控制器 7.1 导航控制器 关于导航控制器和表视图 导航控制器和表视图…

windows如何使用ssh登录ubuntu

1.ssh的安装gavinubuntu:~$ sudo apt-get install ssh2.生成密钥 [html] view plaincopyprint?gavinubuntu:~$ ssh-keygen [plain] view plaincopyprint?Generating public/private rsa key pair. Enter file in which to save the key (/home/gavin/.ssh/id_rsa): …

抖音最强python_装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案...

1. 场景如果你经常刷抖音和微信朋友圈,一定发现了最近九宫格短视频很火!从朋友圈九宫格图片,到九宫格视频,相比传统的图片视频,前者似乎更有个性和逼格除了传统的剪辑软件可以实现,是否有其他更加快捷方便的…

gin redis 链接不上_Redis 高并发问题,及解决方案!

(一)redis技术的使用:redis真的是一个很好的技术,它可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。。。redis之所以能解决高并发的原因是它可以直接访问内存,而以往我们用的是数据…

任务管理平台_软件品质评测系统任务分发管理平台

testkuaibao|软件测试自学公众号1●为什么需要任务分发平台●在一个基本的评测系统中我们有了评测执行工具、评测数据、评测环境就能进行一次评测任务的执行,但现在是大数据时代,我们更多的需求是针对大量数据进行评测。比如在输入法评测中我们有10000个…

用mingw链接msvc生成的库时,无定义chkstk问题的解决

在用mingw链接msvc生成的库时常常产生这样的链接错误: undefined reference to _chkstk 这是因为chkstk is a stack-probing thing that MSVC generates whenallocating big stack frames), and that GCC has an equivalent inlibgcc (called _alloca).也…

[转载]Visual Studio 2010敏捷利剑:详解Scrum

Visual Studio 2010敏捷利剑:详解Scrum 【IT168 专稿】随着微软Visual Studio 2010 Ultimate Beta2版本的发布,除了它提供协同一致的ALM(应用程序生命周期)管理工具外,MSF for Agile Software Development过程框架从4.2升级到5.0,并且是以Scr…

网站收录工具(php导航自动收录源码)_10步把企业网站优化做到极致,SEO优化的核心知识...

对于企业网站优化,重要的就3点,内容原创、外链建设、内部优化,其它网站优化也会涉及到这些,但是企业站就变的简单的多了,下面10步让你把企业网站优化做到极致。第一步:首先域就是让搜索引擎选择我们网站的主…

“无法解析外部符号 __security_cookie”问题解决

编译VC工程时出现了标题所示问题,资料搜索一下,在微软网站找到答案了,解决方法如下:1)选择“项目”-》“属性”-》“C/C”-》“代码生成”-》“缓冲区安全检查”,设为“否”2)选择“项目”-》“…

mysql not is null_转!!mysql 字段 is not null 和 字段 !=null

今天在查询数据时,查到包含一条某个时间startTime(该字段默认为null ) 为null的记录,想把它过滤,加了 startTime! null 的条件,结果记录都没了,应该用条件 is not null。转自:https://segmentfault.com/a/1…

WindowManager.LayoutParams类

WindowManager.LayoutParams 是 WindowManager 接口的嵌套类;继承于 ViewGroup.LayoutParams 。 它的内容十分丰富。其实WindowManager.java的主要内容就是由这个类定义构成。下面来分析一下这个类:定义public static class WindowManager.LayoutParam…

myeclipse mysql连接_MyEclipse连接Mysql数据库的方法(一)

准备工作:MyEclipse使用的是2013版,mysql Ver 14.14 Distrib 5.6.281.jar包的下载(jdbc驱动)我下载的是:mysql-connector-java-5.1.7-bin.jar2.打开MyEclipse---->选择window---->选择open perspecctive---->myeclipse Database Exp…

Qt+VS2005(配置步骤)

在VS2005中安装了QT4.4.3,由于目前的QT版本已经很高了,很难找到QT4.3.2之类的版本了,还有另外一个原因:QT在VS2005上的插件的版本也很高了。因此,很多QT与VS2005结合的文章,现在都不太适用了;不…

c malloc 头文件_C/C++笔试题:主要考察C/C++语言基础概念算法及编程,附参考答案...

1.编写my_strcpy函数,实现与库函数strcpy类似的功能,不能使用任何库函数;答:char *strcpy(char *strDest, const char *strSrc){if ( strDest NULL || strSrc NULL)return NULL ;if ( strDest strSrc)returnstrDest ;char *tem…

置换加密算法

1 #include "stdio.h"2 #include "stdlib.h"3 #define column 34 typedef char DataType;5 6 7 /************************************************************************/8 /* 置换加密算法。9 content为需要加密的内容,index为置换的密匙…

SQLlite数据导入到mySQL_如何批量导入数据到Sqlite数据库

做android和ios开发的一般都用Sqlite数据库,有的时候数据需要批量导入,那么如何导入呢?在这里,介绍2种方法供大家参考。一、用sqlite命令以windows系统为例,linux下命令是一样的。1.安装sqlite工具包首先要安装有sqlit…

c/c++ 运行库

11.2 C/C运行库 11.2.1 C语言运行库 任何一个C程序,它的背后都有一套庞大的代码来进行支撑,以使得该程序能够正常运行。这套代码至少包括入口函数,及其所依赖的函数所构成的函数集合。当然,它还理应包括各种标准库函数的实现。…

下面哪个字段是http请求中必须具备的_理解HTTP协议-HTTP协议详解总结

一、HTTP协议的演进HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80。1、HTTP 0.9版本 1991年这个版…

查看一个结构体成员的方法

find / *.h -name|xargs grep 结构体名 这个方法并不是很凑效。。。 万能的gdb 法: int main(void){type var;return 0;}gcc -g a.cgdb a.outb mainrp varset print pretty onp varp main::v转载于:https://www.cnblogs.com/mathzzz/archive/2012/09/24/2700796.htm…