Я использую AsyncTask для чтения файла "/ proc / net / arp" после его заполнения. проблема в том, что после прочтения каждой строки я хочу выполнить разрешение имен для каждого IP-адреса. и вот тогда я получаю ошибки исключения. Я не выполняю это в основном потоке, так как я использую AsyncTask для этого процесса. это мой метод onProgressUpdate
protected void onProgressUpdate(Void... params) {
//update progress bar
/*scanProgress.setProgress(values[0].progressBar);*/
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(ARP_TABLE), "UTF-8"));
reader.readLine(); // Skip header.
String line;
while ((line = reader.readLine()) != null) {
Log.v("ARPFILE", line);
String[] arpLine = line.split("\\s+");
//if arp line contains flag 0x2 we parse host
if(arpLine[2].equals(ARP_FLAG)) {
final String ip = arpLine[0];
final String flag = arpLine[2];
final String mac = arpLine[3];
Node node = new Node(ip, mac);
hostList.add(node);
networkAdapter.notifyDataSetInvalidated();
// scanProgress.setProgress(node.progressBar);
}
}
reader.close();
}
catch (Exception ex) {
}
for(Node node: hostList) {
InetAddress inetAddress;
android.os.Debug.waitForDebugger();
try {
inetAddress = InetAddress.getByName(node.ip);
String hostname = inetAddress.getCanonicalHostName();
node.setHostName(hostname);
Log.v("HOSTNAME", hostname);
} catch (UnknownHostException e) {
// It's common that many discovered hosts won't have a NetBIOS entry.
}
}
}