PJSIP开发手册之消息发送(七)

2024-01-13 18:32

本文主要是介绍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开发手册之消息发送(七)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/602402

相关文章

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Spring Boot整合消息队列RabbitMQ的实现示例

《SpringBoot整合消息队列RabbitMQ的实现示例》本文主要介绍了SpringBoot整合消息队列RabbitMQ的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装Spring

springboot rocketmq配置生产者和消息者的步骤

《springbootrocketmq配置生产者和消息者的步骤》本文介绍了如何在SpringBoot中集成RocketMQ,包括添加依赖、配置application.yml、创建生产者和消费者,并展... 目录1. 添加依赖2. 配置application.yml3. 创建生产者4. 创建消费者5. 使用在

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问