首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android中获取连接到同一Wi-Fi网络的所有系统的IP地址

如何在android中获取连接到同一Wi-Fi网络的所有系统的IP地址
EN

Stack Overflow用户
提问于 2013-04-16 19:16:41
回答 2查看 12.4K关注 0票数 3

谁能告诉我如何找到所有系统的IP地址连接到同一网络在Android编程。DHCPInfo类只提供分配给我们的安卓设备的to地址,而不提供连接到同一网络的其他设备的to地址。如何获取连接到同一网络的其他设备的of地址?

EN

回答 2

Stack Overflow用户

发布于 2014-01-13 20:40:37

首先通过下面的命令获取主机ip

代码语言:javascript
复制
public String   s_dns1 ;
   public String   s_dns2;     
   public String   s_gateway;  
   public String   s_ipAddress;    
   public String   s_leaseDuration;    
   public String   s_netmask;  
   public String   s_serverAddress;
   TextView info;
   DhcpInfo d;
   WifiManager wifii;

    wifii = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        d = wifii.getDhcpInfo();

        s_dns1 = "DNS 1: " + String.valueOf(d.dns1);
        s_dns2 = "DNS 2: " + String.valueOf(d.dns2);
        s_gateway = "Default Gateway: " + String.valueOf(d.gateway);
        s_ipAddress = "IP Address: " + String.valueOf(d.ipAddress);
        s_leaseDuration = "Lease Time: " + String.valueOf(d.leaseDuration);
        s_netmask = "Subnet Mask: " + String.valueOf(d.netmask);
        s_serverAddress = "Server IP: " + String.valueOf(d.serverAddress);

d.dns1是主机ip

现在通过这个连接ips

代码语言:javascript
复制
String connections = "";
        InetAddress host;
        try
        {
            host = InetAddress.getByName(intToIp(d.dns1));
            byte[] ip = host.getAddress();

            for(int i = 1; i <= 254; i++)
            {
                ip[3] = (byte) i;
                InetAddress address = InetAddress.getByAddress(ip);
                if(address.isReachable(100))
                {
                    System.out.println(address + " machine is turned on and can be pinged");
                    connections+= address+"\n";
                }
                else if(!address.getHostAddress().equals(address.getHostName()))
                {
                    System.out.println(address + " machine is known in a DNS lookup");
                }

            }
        }
        catch(UnknownHostException e1)
        {
            e1.printStackTrace();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
       System.out.println(connections);

intToIp

代码语言:javascript
复制
public String intToIp(int i) {
        return (i & 0xFF) + "." +
                ((i >> 8 ) & 0xFF) + "." +
                ((i >> 16) & 0xFF) + "." +
                ((i >> 24) & 0xFF);
    }
票数 5
EN

Stack Overflow用户

发布于 2013-04-16 20:00:44

代码语言:javascript
复制
private class Task extends AsyncTask<void void="">{

     InetAddress[] inetAddress = null;
     List<string> hostList = new ArrayList<string>();

  @Override
  protected Void doInBackground(Void... arg0) {

   doTest();
  }


  @Override
  protected void onPostExecute(Void result) {

    ArrayAdapter<string> adapter
    = new ArrayAdapter<string>(
      AndroidInetActivity.this,
      android.R.layout.simple_list_item_1,
      hostList);

    resultList.setAdapter(adapter);
   }

  private void doTest(){

      String host = hostinput.getText().toString();
    inetAddress = InetAddress.getAllByName(host);

    for(int i = 0; i < inetAddress.length; i++){

     hostList.add(inetAddress[i].getClass() + " -\n"
       + inetAddress[i].getHostName() + "\n"
       + inetAddress[i].getHostAddress());
       }

     }
    }
} 
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16035636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档