接続をリッスンするサービスがあり、特定のネットワークでのみリッスンするようにします。次のようにデバイスの 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 である必要があります。
4 番目の値を直接 0 に置き換えることもできますが、これは他のネットワークでは失敗します。
InetAddress.getHostAddress(); によって返される IP アドレスに関連付けられたネットワーク アドレスを取得する方法はありますか? ?