- Реализация на С., XMan, 15:50 , 23-Июл-03 (1)
Делаешь операцию AND между адресом и маской проверяемой подсети и смотришь, совпадает ли результат с адресом подсети. Если совпадает, то это та самая сеть:if ((hostaddr & mask) == netaddr) { // нужная сеть };
- Реализация на С., Vladimir, 16:33 , 23-Июл-03 (2)
А какого типа hostaddr и mask? у меня просто входные данные типа char *ad="10.0.0.1"; как это должно выглядеть?
- Реализация на С., J, 10:30 , 24-Июл-03 (3)
>А какого типа hostaddr и mask? >у меня просто входные данные типа >char *ad="10.0.0.1"; >как это должно выглядеть? int is_host_in_net(unsigned long net, unsigned long mask, unsigned long host){ long res,res1,res2; res1=net & mask; res2=host & mask; res=res1 - res2; if(res == 0) return 0; return 1; } int is_host_in_net2(unsigned long net, unsigned long mask, char *host){ struct in_addr snet; inet_aton(host, &snet); return is_host_in_net(net,mask,snet.s_addr); }
|