如何在Android中按名称获取LAN计算机的IP地址

时间:2013-12-10 13:34:08

标签: android

我在局域网中有一台计算机,我想通过手机上的名字获取其IP地址。我了解到使用InetAddress会给我IP。

如果我使用浏览器,我可以看到电脑。

我使用了以下代码:

InetAddress address = InetAddress.getByName("computer1");
if(address!=null)
  Log.w("DEBUG",address.getHostAddress().toString());
else
  Log.w("DEBUG","No ip found");

我得到的只是一个例外:

java.net.UnknownHostException
        at java.net.InetAddress.lookupHostByName(InetAddress.java:506)
        at java.net.InetAddress.getAllByNameImpl(InetAddress.java:294)
        at java.net.InetAddress.getByName(InetAddress.java:325)
        at com.example.Data.BGTask.AdatSzinkronizalas(DataTask.java:470)
        at com.example.Data.BGTask.doInBackground(DataTask.java:237)
        at com.example.Data.BGTask.doInBackground(DataTask.java:51)
        at android.os.AsyncTask$2.call(AsyncTask.java:185)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
        at java.lang.Thread.run(Thread.java:1019)

我还应该使用什么?

2 个答案:

答案 0 :(得分:0)

我认为你使用的是好的。当应用程序执行查找时,“computer1”似乎无法解析。确保设备的DNS服务器能够解析您尝试引用的主机名。

答案 1 :(得分:0)

看来,我必须使用计算机的完整域名来获取其IP地址。而不是

  

电脑1

我必须使用

  

computer1.mydomain.local

有了这个,Android就能够获得IP地址。我想知道全名只在AD环境中是强制性的,或者任何一台PC都应该使用某种全名。