我正在尝试映射本地网络以查看网络上有多少设备(特别是我已经构建的设备)以及它们具有的IP地址。 我找到了一些方法:
List devices on local network with ping
Why does InetAddress.isReachable return false, when I can ping the IP address?
How do I test the availability of the internet in Java?
最后一个链接是我能够工作的链接,但它不是非常可靠(至少不是我的实现)。当我在手机上运行代码时,它很少会在网络上检测到我的设备(只有少数几次尝试)。
该设备是TI CC3200,我已将其设置为网络服务器。我可以用我的笔记本电脑可靠地ping CC3200,我可以使用我的笔记本电脑,手机浏览器或应用程序中的WebView几乎100%的时间访问它上面的网页。
我有一个CC3200的串行链接,我可以看到该应用在扫描网络时连接到CC3200。
我做错了吗?或者是否有更好的方法来映射我应该集中精力的本地网络?
public boolean scan(final String IP) {
Globals success = Globals.getInstance();
success.setDataString(IP);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Globals success = Globals.getInstance();
URL url = new URL("http://" + IP);
URLConnection conn = url.openConnection();
conn.setConnectTimeout(2000);
conn.setReadTimeout(2000);
InputStream in = conn.getInputStream();
success.setDataBool(true);
} catch (SocketTimeoutException e) {
Globals success = Globals.getInstance();
success.setDataBool(false);
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
//boolean temp2 = success.getDataBool();
return success.getDataBool();
}
}