【发布时间】:2016-05-30 12:12:43
【问题描述】:
我想通过本地网络中的hostname 找到设备的IP Address。市场上的许多应用程序都是这样做的。它同时提供IP Address 和hostname,例如Fing、IP Tools 等等。但我仍然无法从hostname 找到IP Address。
我可以通过在ubuntu OS 14.04 中使用dig、arp 和ping 命令找到IP 或hostname,请参阅以下命令:
dig @224.0.0.251 -p 5353 example.local
这个命令给我这样的输出:
; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> @224.0.0.251 -p 5353 example.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56566
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;example.local. IN A
;; ANSWER SECTION:
example.local. 10 IN A 192.168.0.142
;; Query time: 0 msec
;; SERVER: 192.168.0.142#5353(224.0.0.251)
;; WHEN: Mon May 30 17:01:06 IST 2016
;; MSG SIZE rcvd: 47
那个特定的ANSWER SECTION 给了我ip 反对hostname。
当我使用以下命令时:
arp -vn example.local
它给了我以下输出:
Entries: 4 Skipped: 4 Found: 0
example.local (192.168.0.142) -- no entry
当我使用他们的hostname ping 设备时
ping example.local
它也给了我IP Address:
PING example.local (192.168.0.142) 56(84) bytes of data.
64 bytes from 192.168.0.142: icmp_seq=1 ttl=64 time=0.033 ms
64 bytes from 192.168.0.142: icmp_seq=2 ttl=64 time=0.059 ms
64 bytes from 192.168.0.142: icmp_seq=3 ttl=64 time=0.045 ms
64 bytes from 192.168.0.142: icmp_seq=4 ttl=64 time=0.060 ms
64 bytes from 192.168.0.142: icmp_seq=5 ttl=64 time=0.069 ms
但是当我在adb shell 上执行上述命令时,大部分命令都找不到。 arp 和 dig 在 android 中不存在。
当我使用他们的hostname 通过 adb shell ping 设备时,它给了我以下错误:
ping: unknown host example.local
但是当我通过设备的ip ping 时,它成功ping:
$ ping 192.168.0.142
PING 192.168.0.142 (192.168.0.142) 56(84) bytes of data.
64 bytes from 192.168.0.142: icmp_seq=1 ttl=64 time=263 ms
64 bytes from 192.168.0.142: icmp_seq=2 ttl=64 time=231 ms
64 bytes from 192.168.0.142: icmp_seq=3 ttl=64 time=1.82 ms
64 bytes from 192.168.0.142: icmp_seq=4 ttl=64 time=1.99 ms
64 bytes from 192.168.0.142: icmp_seq=5 ttl=64 time=122 ms
64 bytes from 192.168.0.142: icmp_seq=6 ttl=64 time=5.63 ms
以上事情是在同一个网络中完成的,但我仍然没有通过hostname 得到IP(当我使用来自adb shell 的相同命令时)。我如何使用adb shell 在android 设备上通过他们的hostname 找到IP。
有谁知道我做错了什么?
【问题讨论】:
-
您在使用 adb shell 时在 ping 命令“example.local”中使用了错误的主机名。您的设备不知道该主机名。您需要告诉您的设备 IP 192.168.0.142 属于 Host:example.local。这可以使用 DNS 服务器配置(相当复杂)或在设备上编辑主机文件(设备上需要 root)来实现
-
我是安卓新手。如何使用 DNS 服务器配置?
-
哦,和安卓完全没有关系。您需要配置网络的 DNS 服务器,它会说“example.local”的 IP 为 192.168.0.142。但我不确定你为什么需要主机名的 IP 地址。如果你能告诉我们用例,也许我们可以提供替代解决方案
-
如果你正在开发一个应用程序,你可以使用android java api See
-
@SangramJadhav:是的,它与 android 无关,但我想尝试 DNS 配置。请你帮助我好吗。如何在
example.local上配置 DNS 服务器。请与我分享任何可以帮助我的链接/程序。我的 example.local 系统是 linux 基础系统,具有很多运行 DNS 服务器的能力。请帮帮我?
标签: android linux shell unix networking