标签:networking network-programming android-intent java android
如何使用Android手机获取PC的IP地址? (特别是如何获取具有特定MAC地址的系统的IP地址,该系统的IP地址与Android手机位于同一网络上)?
wired wired
modem--------router---------PC(mac:EE:00:B3:2F:56:12)
|
|
|
wireless
|
|
|
-------------android phone(A)
解决方法:
private String getIP(String mac) {
String ip = null;
try {
BufferedReader br = new BufferedReader(new FileReader("/proc/net/arp"));
String line = "";
while((line = br.readLine()) != null) {
String[] tokens = line.split("\\s+");
// The ARP table has the form:
// IP address HW type Flags HW address Mask Device
// 192.168.178.21 0x1 0x2 00:1a:2b:3c:4d:5e * tiwlan0
if(tokens.length >= 4 && tokens[3].equalsIgnoreCase(mac)) {
ip = tokens[0];
break;
}
}
br.close();
}
catch(Exception e) { Log.e(TAG, e.toString()); }
return ip;
}
但要注意:除非您已经与PC建立联系(并且将需要其IP地址或名称),否则ARP表将为空.
我想您想反过来做,只知道其MAC地址就与PC建立连接.那不是那么简单.您可能试图对本地网络上的每个人执行ping操作(Runtime.getRuntime().exec(“ ping -b 192.168.178.255”);)只是为了填充ARP表.
或者,也许您可以从路由器中获取所有客户端及其IP地址的列表?
标签:networking,network-programming,android-intent,java,android 来源: https://codeday.me/bug/20191201/2079516.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。