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

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配