dnsjava和Android

时间:2014-02-19 16:42:27

标签: android dnsjava

我有一个Android应用程序,我正在尝试添加DNS SRV记录检测。我知道这是可能的,基于我已经安装的DNS Lookup等应用程序的存在,它可以正常工作。

我正在使用dnsjava,这个代码在我的机器上作为一个独立的Java应用程序运行良好,但是当我在我的Android设备上运行它时,我只是得到了“错误!”消息:

Lookup lookup = new Lookup(serviceName, Type.SRV, DClass.IN);
Resolver resolver = new SimpleResolver();
lookup.setResolver(resolver);
lookup.setCache(null);
Record[] records = lookup.run();
if (lookup.getResult() == Lookup.SUCCESSFUL) {
    String responseMessage = null;
    String listingType = null;
    for (int i=0; i < records.length; i++) {
        if (records[i] instanceof SRVRecord) {
            listingType = ((SRVRecord) records[i]).toString()
        }
    }

    System.out.println("Found!");
    System.out.println("Response Message: "+responseMessage);
    System.out.println("Listing type: "+listingType);
} else if (lookup.getResult() == Lookup.HOST_NOT_FOUND) {
    System.out.println("Not found.");
} else {
    System.out.println("Error!");
}

为什么这不起作用?

2 个答案:

答案 0 :(得分:1)

在Android中使用非常不同的SRV查找设置;我发现他们总是以“未找到”失败,除非我将以下内容添加到我的Android Manifest:

java.util.concurrent.RejectedExecutionException: Task slick.backend.DatabaseComponent$DatabaseDef

答案 1 :(得分:0)

我不被评论 - 否则我会。

制作更多if语句,例如:

else if (lookup.getResult() == Lookup.HOST_NOT_FOUND) {
                    System.out.println("Not found.");
                } else if (lookup.getResult() == Lookup.TRY_AGAIN) {
                    System.out.println("Error!1");
                }  else if (lookup.getResult() == Lookup.TYPE_NOT_FOUND) {
                    System.out.println("Error!2");
                } else if (lookup.getResult() == Lookup.UNRECOVERABLE) {
                    System.out.println("Error!3");
                }

另外,请尝试更改:DClass.IN to DClass.ANY