ile gelen cihazın IP adresini al AllJoyn ile birlikte gelen cihazın IP adresini alabilir miyim? Hizmet yayını çok uzun sürmez ve IP'yi DNS kaydından okumak için ona güvenemem. AllJoyn'de yerleşik olan cihazın IP adresini döndüren bir API var mı? Şu anda Android koduyla çalışıyorum ve yakın bir şey bulamadım. Yardım için teşekkürler.AllJoyn
Q
AllJoyn
0
A
cevap
0
AP adı olarak reklamı MAC adresini kullanarak ve/proc/net/arp dosyası üzerinden erişilebilir ARP önbelleğini ayrıştırma tarafından bir ters araması yaparak sona erdi.
if (device.getAPWifiInfo() != null) {
String mac = device.getAPWifiInfo().getSSID();
String split_mac[] = mac.split(" ");
Log.i(TAG, "Mac from ssid is " + split_mac[1]);
mac = split_mac[1];
ip = getIPfromMac(mac);
Log.i(TAG, "IP is " + ip);
}
//returns the ip and takes mac address as parameter
public 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.equalsIgnoreCase(splitted[3])) {
// Basic sanity check
String ip = splitted[0];
return ip;
}
}
return null;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
0
AllJoyn ile denemedim ama eth0 portundan ipaddress'i almak için bu kodu kullanıyorum; Bu size yardımcı olabileceğini düşündüm -
Class<?> SystemProperties = Class.forName("android.os.SystemProperties");
Method method = SystemProperties.getMethod("get", new Class[]{String.class});
String ip = null;
return ip = (String) method.invoke(null,"dhcp.eth0.ipaddress");
Android aygıtın IP'si değil. AllJoyn çerçevesini kullanarak yerleşik cihazın IP adresini almak istedim. – teemo91