2016-09-21 3 views
6

inetaddress 클래스를 사용하여 LAN에서 모든 장치 IP 주소를 가져올 수 있습니다. 내가 뭘해야 역방향 조회 IP 주소이며, 같은 네트워크 장치 이름으로 찾기 :Android에서 역방향 DNS를 사용하여 네트워크 장치 이름을 얻으려고 시도합니다.

 private ArrayList<String> scanSubNet(String subnet) { 
      ArrayList<String> hosts = new ArrayList<>(); 
      InetAddress inetAddress; 

      for (int i = 1; i <= 255; i++) { 
       try { 
        inetAddress = InetAddress.getByName(subnet + String.valueOf(i)); 

        if (inetAddress.isReachable(1000)) { 
         hosts.add(inetAddress.getHostName()); 
         Log.d(TAG, InetAddress.getByAddress(inetAddress.getAddress()).getHostAddress()); 
         Log.d(TAG, InetAddress.getByAddress(inetAddress.getAddress()).getCanonicalHostName()); 
        } 
       } catch (Exception ex) { 
        ex.printStackTrace(); 
       } 
      } 

      return hosts; 
     } 

"지미의 맥북"

내 코드 블록 로컬 네트워크 범위에서 모든 IP 주소를 가져올 수있는 그리고 나는 나의 방법을 다음과 같이 부르고있다. Log.d (TAG에

ArrayList<String> subnetList = scanSubNet("192.168.1.");ArrayList<String> subnetList = scanSubNet("192.168.1."); 

, 내가 역 DNS와 장치 이름을 얻기 위해 노력하고 있어요.하지만 라인의 모두 나에게 문자열로 IP 주소 (안 장치-이름)

이있는 한 출력을 제공 어떤 기회를 성공?

안부, Onder을.

답변

2

MACID를 가져 와서 제조사의 첫 번째 3digits와 일치 시키면됩니다.

https://macvendors.com/ 또한이 웹 사이트에서는 MAC 주소를 확인하기 위해 API (Post/GET)를 제공합니다.

MAC의 전체 이름을 확인하는 대신 Handshake peer to peer를 수행해야합니다.

1

을 이것은 아마도 라우터 잘못에 일어나고있다.

을 LAN을 내 일 성공적인 역방향 DNS 조회에 의존하는 중요한 기능이 아니기 때문에 이러한 유형의 잘못된 구성은 오랫동안 쉽게 발견되지 않을 수 있습니다.

LAN에 대한 더 많은 정보가 없으면 특별한 경우에 무엇이 잘못되었는지 알기는 어렵지만, 가장 먼저 떠오르는 것은 라우터에서 적절한 "DNS 접미사"를 구성하는 것입니다. 이것은 대개 DHCP 설정 아래에 있습니다.

+0

연구에 따르면 LocalNetwork DNS 역방향 장치 이름을 직접 가져올 방법이 없습니다. Samba 프로토콜을 사용하는 공유 1 파일과 같은 피어 투 피어 장치로 핸드 셰이크를 만들어야합니다. –

관련 문제