2012-09-21 62 views
0

我正在使用以下代碼掃描連接到啓用了熱點設備的WiFi設備。它幾乎檢測到所有的設備,但問題是當wifi設備從熱點斷開連接時,列表沒有被刷新(即,即使列表顯示wifi設備被斷開連接,列表也不應該顯示設備這是斷開的)。它顯示了WiFi設備在列表中,如果它連接到一次設備列表是沒有得到刷新,直到我不要關閉熱點 繼時間我的熱點設備&是我的代碼片段...Wifi設備在從熱點設備斷開連接時未從熱點列表中清除

公衆ArrayList的getClientList(布爾onlyReachables,詮釋reachableTimeout){

BufferedReader br = null; 
    ArrayList<ClientScanResultSO> result = null; 

    try { 
     result = new ArrayList<ClientScanResultSO>(); 
     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)) { 
       // Basic sanity check 
       String mac = splitted[3]; 
       System.out.println("mac is***************"+ mac); 
       if (mac.matches("..:..:..:..:..:..")) { 
        boolean isReachable = InetAddress.getByName(splitted[0]).isReachable(reachableTimeout); 
        String name = InetAddress.getByName(splitted[0]).getHostName(); 
        if (!onlyReachables || isReachable) { 
         result.add(new ClientScanResultSO(splitted[0], splitted[3], splitted[5], isReachable, name)); 
        } 
       } 
      } 
     } 
    } catch (Exception e) { 
     Log.e(this.getClass().toString(), e.getMessage()); 
    } finally { 
     try { 
      br.close(); 
     } catch (IOException e) { 
      Log.e(this.getClass().toString(), e.getMessage()); 
     } 
    } 

    return result; 
} 

我想要的WiFi設備不在列表中顯示,當他們從我的Android設備是啓用熱點 有人請幫助我在斷開對此。 謝謝!

回答

0

我不知道我的理解是否正確, 我有以下行代碼的 的String [] =分裂line.split(「+」)的擔憂; 您是否使用空格和+符號連接設備的MAC地址。

問候 AJIL

+0

「的/ proc /淨/ ARP」 ---這個擁有用於地址解析內核ARP表的ASCII可讀轉儲。它將顯示動態學習和預先編程的ARP條目。格式是:「IP地址」「硬件類型」「標誌」「硬件地址」「掩碼」「設備」....分開這些東西我正在使用拆分 –