我有一个侦听连接的服务,我希望它只在特定网络上侦听。我可以像这样获取设备的 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 地址关联的网络地址;?