以下之一:dns.server.com
不是有效的 DNS 服务器,没有 SRV 记录_sip._udp
,DNS 服务在端口 53(标准 DNS 端口)上没有响应,或者您的 Java 代码错误。
要诊断 DNS 服务器问题,您可以尝试host -t SRV _sip._udp.server.com dns.server.com
or dig @dns.server.com -t SRV _sip._udp.server.com
以确认服务器正常工作。
If host
or dig
返回预期的条目,请尝试对您的代码进行以下更改:
Change:
env.put("java.naming.provider.url", "dns://dns.server.com");
To:
env.put("java.naming.provider.url", "dns:");
(即,只需使用操作系统的标准 DNS 解析)
Change:
ctx.getAttributes("_sip._udp", new String [] { "SRV" });
To:
ctx.getAttributes("_sip._udp.domain.com", new String [] { "SRV" });
由于 SRV 记录需要域名才能搜索,因此您最终会得到:
Hashtable<String, String> env = new Hashtable<String, String>();
env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
DirContext ctx = new InitialDirContext(env);
Attributes attributes = ctx.getAttributes("_sip._udp.domain.com", new String [] { "SRV" });
return attributes;