eXosip协议栈构造Info应答并发送

最近在开发GB28181视频监控平台,对于录像的暂停、倍速等控制是通过INFO消息完成的,但是eXosip协议栈没有明确说明该如何去构造INFO消息的应答。通过对源代码的解读,是使用eXosip_call_send_answer接口去构造,参考了一些博客,发现大家使用该接口去构造INFO的应答时会失败。

最开始我构造时也会失败,通过一步步定位发现,失败的原因不是该接口,而是传递给该接口的参数。最开始构造INFO的应答时给接口传入的tid是Invite请求创建的事务,将Invite请求创建的事务tid传递给接口让生成INFO的应答,肯定会失败。在sip协议中INFO消息会产生一个新的事务,因此我们在构建应答时应当使用INFO请求生成的事务tid去构建应答,这样就可以顺利构建成功

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
获取本地发送invite的tid和did需要先在程序中创建一个SIP会话,然后使用exosip_call_send_invite函数发送invite请求。在函数返回成功后,可以通过exosip_call_get_tid和exosip_call_get_did函数获取本地发送invite的tid和did。 下面是一个简单的C程序示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <eXosip2/eXosip.h> int main(int argc, char *argv[]) { int ret = 0; osip_message_t *invite = NULL; const char *to = "sip:alice@example.com"; const char *from = "sip:bob@example.com"; const char *body = "Hello Alice!"; eXosip_t *ctx = NULL; int tid = 0, did = 0; /* 初始化exosip协议栈 */ ret = eXosip_init(); if (ret != 0) { printf("eXosip_init failed: %d\n", ret); return -1; } /* 注册SIP账号 */ ret = eXosip_register_build_initial_request(ctx, from, from, NULL, 60, &invite); if (ret != 0) { printf("eXosip_register_build_initial_request failed: %d\n", ret); goto exit; } ret = eXosip_register_send_request(invite); if (ret != 0) { printf("eXosip_register_send_request failed: %d\n", ret); goto exit; } /* 创建SIP会话并发送invite请求 */ ret = eXosip_call_build_initial_invite(ctx, to, from, NULL, &tid); if (ret != 0) { printf("eXosip_call_build_initial_invite failed: %d\n", ret); goto exit; } ret = eXosip_call_send_invite(tid, body); if (ret != 0) { printf("eXosip_call_send_invite failed: %d\n", ret); goto exit; } /* 获取本地发送invite的tid和did */ did = eXosip_call_get_did(tid); printf("Local DID: %d\n", did); tid = eXosip_call_get_tid(did); printf("Local TID: %d\n", tid); exit: /* 清理exosip协议栈 */ eXosip_quit(); return 0; } ``` 注意:该程序仅供参考,实际使用时需要根据具体情况进行修改和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heibao111728

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值