2017-03-07 81 views
1

我最近正在研究一个需要访问ARP表的Android项目。其中一个要求是避免任何需要根植设备的方法。所以,我的问题是: 是否有任何方式来访问Android中的ARP表,而不需要root设备?在Android中无需访问ARP表

目前我发现大多数方法都使用/ proc/net/arp作为需要root权限的ARP表访问,我不确定这是否唯一方法。

+0

您是否发现了一种不同的方式来访问ARP表? –

回答

0

我可以在没有root权限的情况下访问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; 
}