首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android中获取网络IP地址

在Android中获取网络IP地址
EN

Stack Overflow用户
提问于 2013-01-12 20:43:22
回答 1查看 3.4K关注 0票数 0

我有一个侦听连接的服务,我希望它只侦听特定网络上的连接。我可以像这样获取设备的IP地址:

代码语言:javascript
复制
    private void printNetworkInterfaces()
    {
        try
        {
            Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
            for (NetworkInterface ni : Collections.list(nis))
            {
                Enumeration<InetAddress> iis = ni.getInetAddresses();

                for (InetAddress ia : Collections.list(iis))
                {
                    // We only want IPv4 addresses
                    if (!isIPv4(ia.getHostAddress()))
                        continue;
                    // Do tomething with ia.getHostAddress();


                }
            }    
        }
        catch (SocketException e)
        {
            Log.w(TAG,e);
        }
    }

但是,我希望网络的IP监听该网络,而不是设备的IP。例如,如果IP为192.168.1.1,则网络IP应为192.168.1.0。

我可以直接将第四个值替换为0,但这对于其他网络将失败。

有没有办法获得与InetAddress.getHostAddress();返回的IP地址相关联的网络地址?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-12 20:46:43

根据网络掩码和ip,您可以计算出网络ip。

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14293426

复制
相关文章

相似问题

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