Java 如何使用笔记本电脑mac扫描网络并在路由器中找到笔记本电脑ip地址?
我的笔记本电脑连接到电脑室的路由器。 现在,每次我关闭笔记本电脑并再次连接时,我都会得到一个新的ip地址。 在我的android设备中,我想使用笔记本电脑的ip地址,但每次使用我的电脑时,我都需要登录路由器设置并找到笔记本电脑的ip地址 我想做的是扫描网络中的所有ip,所有连接到路由器网络的ip,然后找到适合笔记本电脑mac地址的ip地址,这样我就知道这是我的笔记本电脑ip地址 我有这两种方法,但我不确定如何使用第一种方法——refreshArp:Java 如何使用笔记本电脑mac扫描网络并在路由器中找到笔记本电脑ip地址?,java,android-studio,Java,Android Studio,我的笔记本电脑连接到电脑室的路由器。 现在,每次我关闭笔记本电脑并再次连接时,我都会得到一个新的ip地址。 在我的android设备中,我想使用笔记本电脑的ip地址,但每次使用我的电脑时,我都需要登录路由器设置并找到笔记本电脑的ip地址 我想做的是扫描网络中的所有ip,所有连接到路由器网络的ip,然后找到适合笔记本电脑mac地址的ip地址,这样我就知道这是我的笔记本电脑ip地址 我有这两种方法,但我不确定如何使用第一种方法——refreshArp: private static void ref
private static void refereshArp(Context ctx){
//IP aquisition from http://stackoverflow.com/a/6071963/1896516
WifiManager wm = (WifiManager) ctx.getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
String[] parts = ip.split(".");
String subnet = parts[0] + "." + parts[1] + "." + parts[2] + ".";
Runtime rt = Runtime.getRuntime();
for(int i=0; i<256; i++){
try{
rt.exec("ping -c1 " + subnet + i)
}catch(IOException e){
continue;
}
}
}
另一个问题是从何处调用这两个方法?从Main活动中的onCreate开始
我正在使用android studio 1.3.2作为我的java代码,这不是一个很好的方法,但是您可以(潜在地)配置dhcp服务器,为您的笔记本电脑提供相同的IP地址(通过MAC地址)。另一种选择可能是在启动时将计算机的IP写入数据库,然后从android查询数据库。这不是一种很好的方法,但您可以(潜在地)配置dhcp服务器,以便为笔记本电脑提供相同的IP地址(通过MAC地址)。另一种选择可能是在启动时将机器的IP写入数据库,然后从android查询数据库。
//Adapted from http://www.flattermann.net/2011/02/android-howto-find-the-hardware-mac-address-of-a-remote-host/
private static String getIpFromMac(String mac) {
if (mac == null)
return null;
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("/proc/net/arp"));
String line;
while ((line = br.readLine()) != null) {
String[] splitted = line.split(" +");
if (splitted != null && splitted.length >= 4 && mac.equals(splitted[3])) {
// return the ip of the device
return splitted[0];
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}