使用pjsip发送与接收RFC3261消息的实战指南

3星 · 超过75%的资源 需积分: 10 14 下载量 12 浏览量 更新于2024-09-27 收藏 25KB DOC 举报
"jpsip-1.6开发文档是一个关于使用jpsip库进行SIP信令开发的指南,特别关注发送和接收基于RFC3261的消息,特别是XML格式的数据。文档中提到了对pjproject\pjsip\src\pjsua-lib目录下代码的研究,以及对pjsua_app.c示例的使用。开发者主要关注pjsua-im.c(即时消息处理)和pjsua-core.c(初始化和配置)。文档还包含了对某些函数的修改,如pjsua_send_msg(),并提供了对pjsua_call.c、pjsua_internal.h、pjsua.h和sip_transaction.c等文件的更新说明。" 在这个开发文档中,重点讲解了以下几个知识点: 1. **SIP路由**:描述中的Route字段展示了SIP消息的路由路径,如sip:alice@atlanta.com、sip:bob@biloxi.com和sip:carol@chicago.com,这些是SIP消息经过的代理服务器或UAS。在SIP通信中,路由头用于指定消息的传输路径。 2. **pjsip库**:jpsip-1.6是pjproject的一部分,提供了一个SIP栈,用于实现SIP协议的功能。开发者可以使用这个库来发送和接收SIP消息,包括RFC3261定义的基本消息。 3. **关键文件**:开发者主要研究了`pjsua-lib`目录下的`pjsua_app.c`,但发现`pjsua-call.c`更适合电话呼叫功能,而`pjsua-im.c`更适合即时消息处理。`pjsua-core.c`则涉及初始化配置和加载调用。 4. **自定义函数**:`pjsua_send_msg()`是自定义的发送消息函数,它接收参数如默认用户ID、目标URI、MIME类型、消息头等,并且需要一个外部实现的XML创建回调函数。 5. **回调函数**:在`pjsua.h`中添加了回调函数和数据声明,这使得开发者能够根据SIP事件进行响应,例如处理接收到的XML消息。 6. **代码修改**:`pjsua_call.c`文档中新增了发送和接收XML消息的函数,`pjsua_core.c`和`sip_transaction.c`也进行了相应的调整,以处理ACK请求。 7. **模块移除**:在初始化过程中,去除了DNS、STUN、presence、MWI、publish和refer等模块的配置,这可能意味着开发者只关注基础的SIP消息交换,不涉及这些高级功能。 8. **数据结构**:`URiInfo`结构体用于存储与SIP地址相关的数据,如名称、ID、目的地名称和ID以及主机IP。 通过这份文档,开发者可以了解到如何使用jpsip库构建一个基本的SIP应用,处理即时消息,并根据需要定制SIP消息的路由和处理逻辑。同时,文档还提供了一些核心文件的修改示例,帮助开发者更好地理解和适应这个库。