2017-03-07 21 views
1

최근에 ARP 테이블에 액세스해야하는 Android 프로젝트에서 작업하고 있습니다. 요구 사항 중 하나는 루팅 된 장치가 필요한 모든 방법을 피하는 것입니다. 그래서, 내 질문은 : 거기에 장치를 응원하지 않고 안드로이드 ARP 테이블에 액세스하는 방법은 무엇입니까?Android에 루트가없는 ARP 테이블에 액세스

현재 대부분의 접근 방식은 루트 권한이 필요한 ARP 테이블 액세스에/proc/net/arp를 사용하며 이것이 유일한 방법인지 확실하지 않습니다.

+0

다른 방법으로 액세스 테이블을 찾았습니까? –

답변

0

루트없이 ARP 테이블에 액세스 할 수 있습니다. 여기 내 코드는 다음과 같습니다.

string GetMACAddressviaIP(string ipAddr) 
{ 
    string result = ""; 
    ostringstream ss; 
    ss << "/proc/net/arp"; 
    string loc = ss.str(); 

    ifstream in(loc); 
    if(!in) 
    { 
     printf("open %s failed\n",loc.c_str()); 
     return result; 
    } 

    string line; 
    while(getline(in, line)){ 
     if(strstr(line.c_str(), ipAddr.c_str())) 
     { 
      const char *buf = strstr(line.c_str(), ":") - 2; 
      int counter = 0; 
      stringstream ss; 
      while(counter < 17) 
      { 
       ss << buf[counter]; 
       counter++; 
      } 
      result = ss.str(); 
     } 
    } 

    return result; 
}