exosip2协议栈如何获取本地发送invite的tid和did,写一个C程序
时间: 2024-03-08 08:48:31 浏览: 168
exosip协议栈
获取本地发送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;
}
```
注意:该程序仅供参考,实际使用时需要根据具体情况进行修改和完善。
阅读全文