在Android上获取DHCP的域名

在Android上获取DHCP的域名,android,macos,networking,dns,fedora-25,Android,Macos,Networking,Dns,Fedora 25,我想获取Android上MacOS和Linux的/etc/resolv.conf中的域/搜索的值 以下是MacOS和Linux(Fedora 25)的示例: 马科斯: # # Mac OS X Notice # # This file is not used by the host name and address resolution # or the DNS query routing mechanisms used by most processes on # this Mac OS X

我想获取Android上MacOS和Linux的
/etc/resolv.conf
中的
/
搜索
的值

以下是MacOS和Linux(Fedora 25)的示例:

马科斯:

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
domain home
nameserver 195.121.1.34
nameserver 195.121.1.66
Linux:

# Generated by NetworkManager
search home
nameserver 195.121.1.34
nameserver 195.121.1.66
如您所见,我在上述情况下寻找的值是
home
。你知道我怎样才能在安卓上得到它吗

我想做什么?
我正在尝试制作一个Android应用程序,根据网络的设置,它的行为会有所不同。例如,它尝试查找服务
foo.home
(注意
home
是动态的,取决于网络),如果成功,它将使用该服务器。否则,它将查询公共服务以找出它应该使用的服务器。

搜索路径的要点是,它将自动应用于查询,因此您的应用程序不需要显式地将其添加到域中

我不确定您要使用什么语言,因为您在这里针对不同的平台,但举个例子:

// start with the unqualified name
service = "foo";
try {
    InetAddress.getByName(addr);
} catch (UnknownHostException e) {
    // if `foo' did not resolve, use the external service
    // specified by the fully qualified name
    service = "public.whatever.com"
}

请显示一些代码,并说明您遇到的问题或异常情况。@jww我目前没有android端的任何代码。我所知道的就是在MacOS和Linux上找到我想要的东西。但是,
resolv.conf
在Android上不存在。你的建议有一个问题:假设我有两个这样的设置实例。一个用于工作,一个用于家庭。当我在家连接到网络时,
resolv.conf
文件将填充
domain-behrooz-home
,当我在工作时连接时,值为
domain-behrooz-work
。因此,我将传递给
InetAddress.getByName
的内容将因网络而异。它不能是静态的。只需传递裸主机名即可。关键是,您不需要指定本地域名,如果您传递的主机名没有指定域名,它将自动应用。因此,服务是
foo.behrooz work
foo.behrooz home
,具体取决于我使用的网络。你说的裸主机名是什么意思?我知道的唯一部分是foo,但是foo不能解决任何问题
foo.behrooz home
将起作用,而不是
foo
behrooz home
!这就是为什么我想算出第二部分的值,并在其中添加
foo
。什么意思
foo
无法解决?你试过了?如果你在家,你做了平福,会发生什么?它与ping foo.behrooz工作不同吗?不幸的是,没有,因为我们不必配置用户要使用的网络。