本文主要是介绍PJSIP开发手册之消息发送(七),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第七章 发送消息
发送和接收消息是SIP应用的核心操作。每个模块里的on_rx_request()和on_rx_response()回调函数来处理接收到来的消息。
这章将介绍基本的发送外出消息的方法,例如,不使用transaction或dialog。
下一章Transaction介绍关于如何有状态地处理请求(到来请求和出去请求)。
发送消息概述
创建消息
PJSIP提供了多种API来创建请求和响应消息。下面是几种创建消息的方法:
- 对于响应消息,最简单的方法是调用pjsip_endpt_create_response()函数
- 对于请求消息,你可以使用pjsip_endpt_create_request(),pjsip_endpt_create_request_from_hdr(),pjsip_endpt_create_ack()或pjsip_endpt_create_cancel ()函数
- 代理服务器可以根据到来的要转发的消息,来创建请求和响应,通过调用pjsip_endpt_create_request_fwd()和pjsip_endpt_create_response_fwd()函数
- 或者你可以创建请求或响应,通过pjsip_endpt_create_tdata()创建传输缓存,pjsip_msg_create()来创建消息,pjsip_msg_add_hdr()或pjsip_msg_insert_first_hdr()来插入头部域,设置消息体,等等。
- 高层的模块可以提供更多的方式去创建消息(如dialog层)。
所有的消息创建API(除了底层的pjsip_endpt_create_tdata())将设置传输缓存(pjsip_tx_data)的引用计数器为1,这意味着应用(或栈)在某个时刻必须减小引用计数器去销毁传输缓存。
所有的消息发送API将减小传输缓存(pjsip_tx_data)的引用计数器。这意味着如果应用没有对传输缓存的引用计数器做其他处理,这个缓存将在发送后销毁。
发送消息
调用pjsip_endpt_acquire_transport()和pjsip_transport_send()函数是最基本的发送消息的方式。但是,在这种工作方式下,你需要知道目的地址(即sockaddr,不仅仅是主机名)。因为从得到消息和精确的socket地址有一些步骤要做(例如,决定使用哪个地址
这篇关于PJSIP开发手册之消息发送(七)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!