如何判断两个android 网络是否在同一个局域网
时间: 2023-12-04 20:02:36 浏览: 75
要判断两个 Android 设备是否在同一个局域网中,可以通过以下步骤:
1. 获取当前设备的 IP 地址和子网掩码。
可以使用以下代码获取当前设备的 IP 地址和子网掩码:
```
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
DhcpInfo dhcpInfo = wifiManager.getDhcpInfo();
String ipAddress = Formatter.formatIpAddress(dhcpInfo.ipAddress);
String subnetMask = Formatter.formatIpAddress(dhcpInfo.netmask);
```
2. 判断两个设备的 IP 地址是否在同一个子网中。
可以使用以下代码判断两个 IP 地址是否在同一个子网中:
```
public boolean isSameSubnet(String ip1, String ip2, String subnetMask) {
InetAddress inetAddress1 = InetAddress.getByName(ip1);
InetAddress inetAddress2 = InetAddress.getByName(ip2);
InetAddress inetMask = InetAddress.getByName(subnetMask);
int maskBits = 0;
for (byte b : inetMask.getAddress()) {
maskBits += Integer.bitCount(b & 0xff);
}
byte[] bytes1 = inetAddress1.getAddress();
byte[] bytes2 = inetAddress2.getAddress();
for (int i = 0; i < bytes1.length; i++) {
int bits1 = bytes1[i] & 0xff;
int bits2 = bytes2[i] & 0xff;
if ((bits1 & bits2) != (bits1 & 0xff)) {
return false;
}
}
return true;
}
```
其中,ip1 和 ip2 分别为两个设备的 IP 地址,subnetMask 为子网掩码。
如果返回值为 true,说明两个设备在同一个局域网中;如果返回值为 false,说明两个设备不在同一个局域网中。