(OK) Android 内核 中,判断 srcaddr, dstaddr 是否属于 某个网段 或 同一个 网段

  //struct sockaddr_in netaddr1, netaddr2;
  //inet_aton("255.255.255.0", &netaddr1.sin_addr);
  //inet_aton("112.26.0.0", &netaddr2.sin_addr);

		//== 判断 srcaddr, dstaddr 是否属于 某个网段 或 同一个 网段
		//== if (locaddr == 112.26.0.0/24) || ( locaddr/24 == remaddr/24 )
	//	if (((srcaddr.sin_addr.s_addr & netaddr1.sin_addr.s_addr) == netaddr2.sin_addr.s_addr)
	//		|| ((srcaddr.sin_addr.s_addr & netaddr1.sin_addr.s_addr)
	//		 == (dstaddr.sin_addr.s_addr & netaddr1.sin_addr.s_addr)))
		//== netaddr1.sin_addr.s_addr, 即, inet_aton(), 可以使用 inet_addr() 代替
	//	if (((srcaddr.sin_addr.s_addr & inet_addr("255.255.255.0")) == inet_addr("112.26.0.0"))
	//		|| ((srcaddr.sin_addr.s_addr & inet_addr("255.255.255.0"))
	//		 == (dstaddr.sin_addr.s_addr & inet_addr("255.255.255.0"))))
		//== Android 内核 中 没有 inet_aton(), inet_addr(), 直接 使用 IP 地址 的 十六进制表示
		//== "255.255.255.0" = 0x00ffffff, "112.26.0.0" = 0x00001a70
		if (((srcaddr.sin_addr.s_addr & 0x00ffffff) == 0x00001a70)
			|| ((srcaddr.sin_addr.s_addr & 0x00ffffff)
			 == (dstaddr.sin_addr.s_addr & 0x00ffffff)))
			printf("yes\n");
		else
			printf("no\n");


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值