我有一个侦听连接的服务,我希望它只能在特定网络上侦听。我可以得到我的设备的IP地址:
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替换第4个值,但这对其他网络来说会失败。
是否有某种方法可以获取与InetAddress.getHostAddress()返回的IP地址关联的网络地址; ?
答案 0 :(得分:1)
从网络掩码和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);