>Собственно сабж. Не написано ли чего такого уже?
У двух хостов, находящихся в одной сети, одинаковым является адрес сети и разным - адрес хостов. Если же разные сетевые маски - хосты однозначно находятся в разных сетях, хотя фактически возможен вариант, когда одна сеть находится в другой.
// addr - адрес хоста. Например: 192.168.1.1
// addr_netmask - сетевая маска хоста. Например: 255.255.255.0
// network_addr - адрес сети. Например: 192.168.1.0
// netmask - сетевая маска. Например: 255.255.255.0
int test_addr( uint32_t addr, uint32_t addr_netmask, uint32_t network_addr, uint32_t netmask )
{
int result = 0;
uint32_t net_part;
if( addr_netmask == netmask )
{
// Выделим из адреса сети сетевую часть
net_part = network_addr & netmask;
if( net_part == (addr & netmask) )
{
result = 1;
}
}
return result;
}