在Android中获取网络IP地址
我有一个监听连接的服务,我希望它只监听特定网络上的连接。我可以像这样获取设备的IP地址:在Android中获取网络IP地址,android,networking,ip,Android,Networking,Ip,我有一个监听连接的服务,我希望它只监听特定网络上的连接。我可以像这样获取设备的IP地址: private void printNetworkInterfaces() { try { Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces(); for (NetworkInterface ni : C
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);
}
}
private void printNetworkInterfaces()
{
尝试
{
枚举nis=NetworkInterface.getNetworkInterfaces();
用于(网络接口ni:Collections.list(nis))
{
枚举iis=ni.getInetAddresses();
用于(iNet地址ia:Collections.list(iis))
{
//我们只需要IPv4地址
如果(!isIPv4(ia.getHostAddress()))
继续;
//使用ia.getHostAddress()执行操作;
}
}
}
捕获(SocketException e)
{
Log.w(TAG,e);
}
}
但是,我希望网络的IP在该网络上侦听,而不是设备的IP。
例如,如果IP为192.168.1.1,则网络IP应为192.168.1.0
我可以直接用0替换第四个值,但对于其他网络,这将失败
是否有方法获取与InetAddress.getHostAddress()返回的IP地址关联的网络地址 从网络掩码和ip可以计算网络ip
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);
他在网络上请求其他IP的可能重复。我要的是网络本身的IP地址。我该如何计算?此外,DhcpInfo仅在WifiManager中,而不在ConnectionManager中。简单地说,掩码位和ip位。或者使用这个:只返回问题所在的内部IPT。如果需要外部IP,请检查以下示例:。这只是一个例子,您应该获得一个可靠的提供者,并处理从wbepage下载的字符串。(如跳过广告等)