成都网站设计网站,电影网站建设的意义,晋江文学城电脑版,无极招聘网最新招聘一、 在windows下利用vc6.0编译pjsip源码
首先阅读文档readme.txt#xff0c;查找在win32平台源码的编译方法。自己总结方法如下#xff1a;
a.设置pjsua为当前活动工程
b.因为编译的时候提醒缺少config_site.h文件#xff0c;所以在pjlib/include/pj/下新建一个空的c…一、 在windows下利用vc6.0编译pjsip源码
首先阅读文档readme.txt查找在win32平台源码的编译方法。自己总结方法如下
a.设置pjsua为当前活动工程
b.因为编译的时候提醒缺少config_site.h文件所以在pjlib/include/pj/下新建一个空的config_site.h文件。
c. 提醒找不到IPHlpApi.h因为microsoft已经不维护vc6.0所以缺少下载最新的Platform SDKfor internet加入Tools - Option -Directories,在Library files和include
d.编译出现unresolved external symbol _pj_get_sys_info错误将pjlib\src\pj下的os_info.c加入pjlib工程
编译在pjsip-apps\bin下生成pjsua_vc6.exe。
1. 在Linux下编译pjsip源码 $ ./configure $ make dep make clean make
在/pjproject-2.1.0/pjsip-apps/bin下可以看到
pjsua-i686-pc-linux-gnu和pjsystest-i686-pc-linux-gnu
3 利用编译源码生成的app模拟一次会话的建立利用wireshark抓包分析sip协议。
Windows端ip;172.16.2.138
linux端ip;172.16.2.63 二、首先windows端运行pjsua_vc6.exe 先选择m,创建一个新的呼叫然后输入sip172.16.2.63linux端地址。然后终端打印如下信息大致可分为三部分 1.起始行 INVITE sip:172.162.63 SIP/2.0 INVITE表示邀请用户参加一个会话sip版本2.0
2.消息头字段 Via:SIP/2.0/UDP172.16.2.138:5060;rport;branchz9hG4bKPj9d24f4650227482987e044d641050ef6
这里给出了请求经过的路径应答请求将按照这个路径传送应答请求。分别是传输层协议、客户名和地址及接收响应的端口号
Max-Forwards: 70
标明请求被转发的最大次数
From:sip:172.16.2.138;tag50bc6da5f91d441fb8802d2692c9ac5e
请求发送者
To: sip:172.16.2.63
请求接收者
Contact:sip:172.16.2.138:5060;ob
一个用来直接访问发送者的url
Call-ID: fdc4d3c08c594ac499b184fbdbc35550
一个全局的唯一标志用来唯一标志这个呼叫
CSeq: 2322 INVITE
用来标识发送不同请求
Allow: PRACK, INVITE, ACK, BYE, CANCEL,UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer,norefersub
Session-Expires: 1800
Min-SE: 90
以上标识服务器制定传送地址有关响应的附加信息
User-Agent: PJSUA v1.16.0win32-5.1/i386/msvc-12.0
发送请求代理相关信息
Content-Type: application/sdp
消息体类型
Content-Length: 450
消息体长度
3标志消息结束的空行
4SDP消息体这是可选的有些时候没有
v0 协议版本
o- 3585476598 3585476598 IN IP4 172.16.2.138 依次是会话见者的用户名会话标识版本网络类型地址
spjmedia
会话名称
cIN IP4 172.16.2.138
连接数据
t0 0 起始时间和终止时间
aX-nat:0 会话/媒体属性值
maudio 4000 RTP/AVP 98 97 99 104 3 0 89 96 媒体类型端口呼叫者希望收发的格式
接下来是看到的是响应消息没有可选的消息体
SIP/2.0 100 Trying
100是状态码Trying表示在连接
Via:SIP/2.0/UDP172.16.2.138:5060;rport5060;received172.16.2.138;branchz9hG4bKPj9d24f4650227482987e044d641050ef6
Call-ID: fdc4d3c08c594ac499b184fbdbc35550
From:sip:172.16.2.138;tag50bc6da5f91d441fb8802d2692c9ac5e
To: sip:172.16.2.63
CSeq: 2322 INVITE
Content-Length: 0
三、在linux端运行pjsua-i686-pc-linux-gnu即可看到一个连接请求
输入200表示接受连接可以看到成功连接的响应消息
SIP/2.0200 OK
Via:SIP/2.0/UDP172.16.2.138:5060;rport5060;received172.16.2.138;branchz9hG4bKPj9d24f4650227482987e044d641050ef6
Call-ID:fdc4d3c08c594ac499b184fbdbc35550
From:sip:172.16.2.138;tag50bc6da5f91d441fb8802d2692c9ac5e
To:sip:172.16.2.63;tagypVNCtNyGRBI9Ij4K9-Ig3Hf14zTkucm
CSeq:2322 INVITE
Contact:sip:172.16.2.63:5060
Allow:PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER,MESSAGE, OPTIONS
Supported:replaces, 100rel, timer, norefersub
Session-Expires:1800;refresheruac
Require:timer
Content-Type:application/sdp
Content-Length: 274 v0
o-3585447798 3585447799 INIP4 172.16.2.63
spjmedia
bAS:84
t00
aX-nat:0
maudio40000 RTP/AVP 98 96
cINIP4 172.16.2.63
bTIAS:64000
artcp:40001 IN IP4 172.16.2.63
asendrecv
artpmap:98speex/16000
artpmap:96telephone-event/8000
afmtp:960-15
接下来可以看到接收端发给请求端的ACK确认消息,其实中的to,from,call-id,cseq字段从上面invite请求复制而来。
ACKsip:172.16.2.63:5060 SIP/2.0
Via:SIP/2.0/UDP172.16.2.138:5060;rport;branchz9hG4bKPj1fb3c29b50914f4db87a8bd92ce0921f
Max-Forwards:70
From:sip:172.16.2.138;tag50bc6da5f91d441fb8802d2692c9ac5e
To:sip:172.16.2.63;tagypVNCtNyGRBI9Ij4K9-Ig3Hf14zTkucm
Call-ID:fdc4d3c08c594ac499b184fbdbc35550
CSeq:2322 ACK
Content-Length: 0
四、解除连接
在接收端输入h表示发送一个BYE给连接端
BYEsip:172.16.2.138:5060;ob SIP/2.0
Via:SIP/2.0/UDP172.16.2.63:5060;rport;branchz9hG4bKPjYBk6NnV2mwIut0wJaHNxU7S6h3eq42IJ
Max-Forwards:70
From:sip:172.16.2.63;tagypVNCtNyGRBI9Ij4K9-Ig3Hf14zTkucm
To:sip:172.16.2.138;tag50bc6da5f91d441fb8802d2692c9ac5e
Call-ID:fdc4d3c08c594ac499b184fbdbc35550
CSeq:18290 BYE
User-Agent:PJSUA v2.1 Linux-2.6.35.22/i686/glibc-2.12
Content-Length: 0
接受到BYE端后会发送一个接受到BYE确认消息200过来
SIP/2.0200 OK
Via:SIP/2.0/UDP172.16.2.63:5060;rport5060;received172.16.2.63;branchz9hG4bKPjYBk6NnV2mwIut0wJaHNxU7S6h3eq42IJ
Call-ID:fdc4d3c08c594ac499b184fbdbc35550
From:sip:172.16.2.63;tagypVNCtNyGRBI9Ij4K9-Ig3Hf14zTkucm
To:sip:172.16.2.138;tag50bc6da5f91d441fb8802d2692c9ac5e
CSeq:18290 BYE
Content-Length: 0
用wireshark对这次会话可以抓取到6次 这六次依次是 1客户端向服务器端发送消息INVITE消息
2服务器段同意呼叫发送100状态码表示请求已收到正在处理中。
3. 发送200表示请求已经完成。
4. 客户端向服务器端发送ACK,证实已经收到。
5客户端突然不想参加此次会话向服务器发送BYE。
6. 结束确认200。