Sipdroid源码初探(二):监听来电,通话建立流程

本文介绍了Sipdroid中监听来电及通话建立的流程,从Sipdroid.StartEngine()开始,详细阐述了Sipdroid.listen()、UserAgent.listen()等函数调用。讲解了InviteTransactionServer监听invite、options和ack消息的处理,并分析了Sip协议的请求响应消息类型。此外,还概述了Sipdroid的源码分层结构,涉及UserAgent、ExtendedCall、ExtendedInviteDialog和InviteTransactionServer等类的职责及其交互方式。
摘要由CSDN通过智能技术生成

sip协议的相关背景知识

SIP协议是一个Client/Sever协议,因此SIP消息分两种:请求消息和响应消息。请求消息是SIP客户端为了激活特定操作而发给服务器端的消息。常用的SIP请求消息如下:
INVITE:表示主叫用户发起会话请求,邀请其他用户加入一个会话。也可以用在呼叫建立后用于更新会话(此时该INVITE又称为Re-invite)。
ACK:客户端向服务器端证实它已经收到了对INVITE请求的最终响应。
PRACK:表示对1xx响应消息的确认请求消息。
BYE:表示终止一个已经建立的呼叫。
CANCEL:表示在收到对请求的最终响应之前取消该请求,对于已完成的请求则无影响。
REGISTER:表示客户端向SIP服务器端注册列在To字段中的地址信息。
OPTIONS:表示查询被叫的相关信息和功能。

SIP协议中的响应消息用于对请求消息进行响应,指示呼叫的成功或失败状态。
常用的一些响应消息:

100试呼叫(Trying)
180振铃(Ringing)
181呼叫正在前转(Call is Being Forwarded)
200成功响应(OK)
302临时迁移(Moved Temporarily)
400错误请求(Bad Request)
401未授权(Unauthorized)
403禁止(Forbidden)
404用户不存在(Not Found)
408请求超时(Request Timeout)
480暂时无人接听(Temporarily Unavailable)
486线路忙(Busy Here)
504服务器超时(Server Time-out)
600全忙(Busy Everywhere)

以上背景知识在下面的代码分析中会用到。

开始

为了了解如何监听来电,我们从Sipdroid.StartEngine()开始,一步一步写出函数的调用过程。过程如下:
Sipdroid.StartEngine() -> Sipdroid.listen() -> UserAgent.listen() ->ExtendedCall.listen() -> ExtendedInviteDialog.listen() -> InviteTransactionServer.listen()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值