Android中的广播地址无法ping回

时间:2014-01-03 10:02:48

标签: android ip broadcast

我打算创建一个应该在局域网上发现计算机的Android应用程序。我试着用ping广播地址。我有两个问题:

  1. 确定的广播地址在Windows和Android上有所不同。 Android告诉我10.255.255.255,http://www.remotemonitoringsystems.ca/broadcast.php告诉我10.111.111.255。
  2. 当我尝试从命令提示符使用广播时,我在2个地址中没有任何结果
  3. 在Android中,我使用以下代码来确定地址:

     InetAddress getBroadcastAddress()
      {
        try
        {
          WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
          DhcpInfo dhcp = wifi.getDhcpInfo();
          // handle null somehow
    
          int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;
          byte[] quads = new byte[4];
          for (int k = 0; k < 4; k++)
            quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
          return InetAddress.getByAddress(quads);
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
        return null;
      }
    

    我应该使用什么地址?为什么我不能从局域网上的计算机获得任何ping?我该如何确定局域网上现有的计算机?

1 个答案:

答案 0 :(得分:0)

方法错了。

我应该使用广播地址来发送特定消息,并从可以阅读和理解该消息的计算机接收回复,而不是对每台现有计算机执行ping操作。

这就是我最终完成任务的方式。