您的位置:首页 > 移动开发 > Android开发

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

2017-07-02 20:40 447 查看
//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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: