我有一个侦听连接的服务,我希望它只侦听特定网络上的连接。我可以像这样获取设备的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,但这对于其他网络将失败。
有没有办法获得与InetAddress.getHostAddress();返回的IP地址相关联的网络地址?
发布于 2013-01-12 20:46:43
根据网络掩码和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);https://stackoverflow.com/questions/14293426
复制相似问题