使用xbill在Java中解析SRV记录。正确的查询字符串?

时间:2014-05-29 09:55:05

标签: java dns port lookup srv

我正在尝试使用java中的org.xbill.DNS为我的域

获取SRV记录

我的域名(例如:example.com)目前有以下设置:

记录:

HostName:         ramuh
IP Address/URL:   1.1.1.1   // the public ip of my computer
Record Type:      A (Address)

我创建了以下SRV记录:

_SERVICE  :        _rdp
_PROTOCOL :        _tcp
PRIORITIY :        1
WEIGHT    :        1
PORT      :        5000      
TARGET    :        ramuh.example.com

我正在使用的查询字符串:

_rdp._tcp.ramuh.example.com

我希望能够获得ramuh.example.com的SRV记录

所以我可以建立:

ramuh.example.com:5000(然后自动翻译为1.1.1.1:5000,而不是从我这边翻译)

目前使用此代码(s是输入的域名,需要返回SRV记录列表):

    String s = "ramuh.example.com";  // the inputted string, I need to obtain the Port to be added to this
    ArrayList<String> ret = new ArrayList<String>();
    String query = "_rdp._tcp." + s;
    try{
        Record[] records = new Lookup(query,Type.SRV).run();  // returning null
        if(records!= null && records.length>0) {
            for(Record r : records){
                SRVRecord srv = (SRVRecord)r;
                String hostname = srv.getTarget().toString().replaceFirst("\\.$","");
                int port = srv.getPort();
                ret.add(hostname+":"+port);
            }
            return ret;
        }
        else{
           return null;
        }
    }catch(TextParseException e){
        return null;
    }

new Lookup()返回null,所以我假设传递的查询字符串无效。我需要对查询字符串或SRV记录执行哪些更改才能使其生效?

将namecheap用作域。

由于

1 个答案:

答案 0 :(得分:0)

查询不必与SRV记录中的目标匹配,而是与您正在使用的域匹配

所以查询将是_rdp._tcp.example.com

这可以通过MXToolbox's SRV lookup上的测试进行验证,但是使用org.xbill.DSN.Lookup无效。

Lookup的问题已简化为另一个问题:23935847