Je souhaite imprimer toutes les adresses IP possibles pour un masque donné. J'ai ce code pour l'obtenir mais il me semble qu'il me manque quelque chose puisque je ne peux pas obtenir la liste des adresses IP. J'ai basé mon code dans this other post.Imprimer toutes les adresses IP en fonction de l'adresse IP et du masque C++
unsigned int ipaddress, subnetmask;
inet_pton(AF_INET, b->IpAddressList.IpAddress.String, &ipaddress);
inet_pton(AF_INET, b->IpAddressList.IpMask.String, &subnetmask);
for (unsigned int i = 1; i<(~subnetmask); i++) {
auto ip = ipaddress & (subnetmask + i);
}
Exemple: ipaddress = = 255.255.252.0 netmask
172.22.0.65Je me attends:
172.22.0.1 172.22.0.2 172.22.0.3 172.22.0.4 ...
Mise à jour: J'ai essayé ce code, mais il ne fonctionne pas, soit:
char* ip = "172.22.0.65";
char* netmask = "255.255.252.0";
struct in_addr ipaddress, subnetmask;
inet_pton(AF_INET, ip, &ipaddress);
inet_pton(AF_INET, netmask, &subnetmask);
unsigned long first_ip = ntohl(ipaddress.s_addr & subnetmask.s_addr);
unsigned long last_ip = ntohl(ipaddress.s_addr | ~(subnetmask.s_addr));
for (unsigned long ip = first_ip; ip <= last_ip; ++ip) {
unsigned long theip = htonl(ip);
struct in_addr x = { theip };
printf("%s\n", inet_ntoa(x));
}
Si vous connaissez votre code est en C++ ** ** alors pourquoi vous ajoutez également ** C **? –
Modifié pour inclure C et C++ – user1618465
Annulé car les réponses pour C et C++ seront significativement différentes. Voulez les deux, posez deux questions. – user4581301