文章标题可能表述不清,罢了,我这里描述一个场景:
当使用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中指定对端端口地址,希望能告诉我。