zoukankan      html  css  js  c++  java
  • 利用exosip DNS CACHE自定义SIP服务器地址和端口

    文章标题可能表述不清,罢了,我这里描述一个场景:

    当使用exosip开发UA时,服务器地址是域名example.com和端口形式,但存在两个限制:

    1、example.com没有DNS记录、没有NAPTR记录,或者example.com的A记录地址不是真实的服务器地址,此时我们得自定义该地址;

    2、端口不是使用默认5060端口,而是自定义的端口,比如5001,此时得显示指定UDP发送的目的端口;

    如上,domain和ip地址没有A记录、NAPTR记录关系,对端端口是5001,且信令上有要求,不可显示指定port。

    关于端口的更改,我在exosip里没有找到相关API,但是domain和IP的解析关系有API,使用exosip提供的DNS_CACHE机制,当然也可以手动添加DNS缓存到系统DNS记录中;

        //close dns and naptr query
    int val=0;
    eXosip_set_option (ctx->context_eXosip, EXOSIP_OPT_DNS_CAPABILITIES, &val);
    
    struct eXosip_dns_cache entry;
    strcpy(entry.host,"example.com");strcpy(entry.ip,"10.0.0.111");
    eXosip_set_option (ctx->context_eXosip, EXOSIP_OPT_ADD_DNS_CACHE , &entry);
    

    对端端口目前没有找到相关API,我修改了exosip在so中写死了目的端口,如下:

    src/eXutils.c:786

     791   if(strncmp(hostname,"10.0.0.111",10)==0){strcpy(portbuf,"5001");}
    792   error = getaddrinfo (hostname, portbuf, &hints, addrinfo);
    

    如果你知道如何在exosip api中指定对端端口地址,希望能告诉我。

  • 相关阅读:
    celery定时器
    基于Django的Rest Framework框架的视图组件
    Django的缓存机制
    Django中的跨域请求问题
    基于Django的Rest Framework框架的url控制器
    基于Django的Rest Framework框架的响应器
    基于Django的Rest Framework框架的分页组件
    基于Django的Rest Framework框架的解析器
    虚拟机下CentOS7开启SSH连接
    Vue中computed和watch的区别
  • 原文地址:https://www.cnblogs.com/cqvoip/p/8079023.html
Copyright © 2011-2022 走看看