判断ip地址是否在一个网段(局域网)

将IP地址 和 掩码 进行与运算,可得出该IP地址所在的网段。
1、首先将IP地址、掩码换算成二进制数
220.193.128.9 11011100.11000001.10000000.00001001
255.255.255.240 11111111.11111111.11111111.11110000
2、将两组二进制对应的第一位乘第一位,第二位乘第二位......类推
得出: 11011100.11000001.10000000.00000000
3、再转为十进制即:220.193.128.0
再用同样的方法算220.193.128.14所在的网段,会也是220.193.128.0
因此两个IP位于同一网段中。
其实计算多了,用口算就可以算出来结果。

	/*
	 * 判断ip是否在一个网段(局域网)
	 * 用ip地址逻辑且子网掩码
	 */
	public boolean isIPAtSameSection(String ip1, String ip2) {
		if (TextUtils.isEmpty(ip1) || TextUtils.isEmpty(ip2)) {
			return false;
		}
		
		ip1 = ip1.trim();
		ip2 = ip2.trim();
		String subnetmask = getSubnetMask().trim();
		String[] ip1s = new String[4];
		String[] ip2s = new String[4];
		String[] subnetmasks = new String[4];
		String[] ipResult1s = new String[4];
		String[] ipResult2s = new String[4];
		ip1s = ip1.split("\\.");
		ip2s = ip2.split("\\.");
		subnetmasks = subnetmask.split("\\.");
		for (int i = 0; i < ip1s.length; ++i) {
			ipResult1s[i] = String.valueOf(Integer.parseInt(ip1s[i]) & Integer.parseInt(subnetmasks[i]));
		}
		for (int i = 0; i < ip2s.length; ++i) {
			ipResult2s[i] = String.valueOf(Integer.parseInt(ip2s[i]) & Integer.parseInt(subnetmasks[i]));
		}
		String newIp1 = ipResult1s[0] + ipResult1s[1] + ipResult1s[2] + ipResult1s[3];
		String newIp2 = ipResult2s[0] + ipResult2s[1] + ipResult2s[2] + ipResult2s[3];
		
		if (newIp1 != null && newIp2 != null && newIp1.equals(newIp2)) {
			return true;
		}
		
		return false;
	}
	// 返回当前手机网卡的子网掩码
	private String getSubnetMask() {
		WifiManager wifi = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
		DhcpInfo dhcp = wifi.getDhcpInfo();
		String ret = intToIp(dhcp.netmask);
		return ret;
	}
	
	// IP地址或网关都是
	private String intToIp(int paramInt) {
		return (paramInt & 0xFF) + "." + (0xFF & paramInt >> 8) + "."
				+ (0xFF & paramInt >> 16) + "." + (0xFF & paramInt >> 24);
	}



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
局域网网段IP搜索是指在一个局域网中,搜索其他网段IP地址的过程。在进行跨网段IP搜索前,需要了解局域网的网络拓扑结构,包括各个网段IP地址范围以及子网掩码。 首先,要实现跨网段IP搜索,需要一个控制台或者服务器作为搜索发起方,该控制台或服务器需要处于局域网中并且具有网络访问权限。其次,搜索发起方需要通过IP扫描工具或者编程语言(如Python的scapy库)来实现IP搜索功能。 具体操作如下: 1. 确定目标网段IP地址范围和子网掩码,例如192.168.0.0/24表示192.168.0.0网段的所有IP地址。 2. 设置搜索发起方的IP地址,确保其在同一局域网中,并且与目标网段不冲突。 3. 使用IP扫描工具或编程语言的API,设置搜索发起方的IP地址范围,并设置超时时间。 4. 发起搜索请求,工具会依次扫描每个IP地址,并且发送探测数据包到目标网段中的每个IP地址。 5. 目标网段中,接收到探测数据包的主机会进行响应,并将响应报文返回到搜索发起方。搜索发起方根据接收到的响应判断目标主机是否在线。 6. 搜索发起方将在线的主机IP地址记录下来,并且可以进一步对其进行端口扫描、服务探测等操作。 需要注意的是,进行跨网段IP搜索可能需要一些时间,并且需要注意不要对网络造成干扰。此外,为了确保搜索的准确性和有效性,建议在进行跨网段IP搜索之前,事先和网络管理员或相关部门沟通并获得授权。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值