2014-01-05 37 views
0

我想查找连接到本地WIFI网络的每台设备。如果设备响应ping,我会查看它是否是Android设备。如果是,则地址将被添加到数组列表中。但由于某些原因,Android设备不响应​​该命令,在Windows控制台中,他们这样做,但不是在代码中。家中的所有电脑都被检测到,但我的两部电话不是,它们不处于待机状态,这可能是一个问题。 我查了一下,发现API不能在Android设备上使用这种方法,但这看起来有点奇怪。这是我正在使用的代码:isreachable(int timeout)不适用于android

try { 
    //To change body of implemented methods use File | Settings | File Templates. 
    InetAddress localhost = InetAddress.getLocalHost(); 
    // this code assumes IPv4 is used 
    byte[] ip = localhost.getAddress(); 

    for (int i = this.startIp; i <= this.startIp + 10; i++) { 
     ip[3] = (byte)i; 
     InetAddress address = InetAddress.getByAddress(ip); 
     if (address.isReachable(250)) { 
      System.out.println(address + " machine is turned on and can be pinged"); 
     } 
     else if (!address.getHostAddress().equals(address.getHostName())) { 
      System.out.println(address + " machine is known in a DNS lookup"); 
      if(address.getHostName().contains("android")) { 
       androidIpAdresses.add(address); 
      } 
     } 
     else { 
      System.out.println(address + " the host address and host name are equal, meaning the host name could not be resolved"); 
     } 
    } 

回答

0

isReachable()可以使用的ICMP PING或者它可能使用TCP ECHO(端口7),在这种情况下,一些装置可能没有响应。使用wireshark查看是哪种情况。

+0

但是,如果它不响应什么是可达()使用?有没有使用java代码联系android设备的另一种方式? Mayby使用bash命令读取输出,如果可能的话? – user1008531

+0

结帐http://developer.android.com/training/connect-devices-wirelessly/nsd.html –

相关问题