Comment convertir une chaîne en adresse IP et vice versa

Comment convertir une chaîne ipAddress (struct in_addr) et vice versa? et comment puis-je me tourner dans un long ipAddress non signé? Merci

Utilisez inet_ntop() et inet_pton() si vous en avez besoin autrement. N’utilisez pas inet_ntoa(), inet_aton() et similaire car ils sont obsolètes et ne supportent pas ipv6.

Voici un bon guide avec quelques exemples.

 // IPv4 demo of inet_ntop() and inet_pton() struct sockaddr_in sa; char str[INET_ADDRSTRLEN]; // store this IP address in sa: inet_pton(AF_INET, "192.0.2.33", &(sa.sin_addr)); // now get it back and print it inet_ntop(AF_INET, &(sa.sin_addr), str, INET_ADDRSTRLEN); printf("%s\n", str); // prints "192.0.2.33" 

Je ne suis pas sûr d’avoir bien compris la question.

Quoi qu’il en soit, cherchez-vous ceci:

 std::ssortingng ip ="192.168.1.54"; std::ssortingngstream s(ip); int a,b,c,d; //to store the 4 ints char ch; //to temporarily store the '.' s >> a >> ch >> b >> ch >> c >> ch >> d; std::cout << a << " " << b << " " << c << " "<< d; 

Sortie:

 192 168 1 54 

J’ai pu convertir ssortingng en DWORD et revenir avec ce code:

 char strAddr[] = "127.0.0.1" DWORD ip = inet_addr(strAddr); // ip contains 16777343 [0x0100007f in hex] struct in_addr paddr; paddr.S_un.S_addr = ip; char *strAdd2 = inet_ntoa(paddr); // strAdd2 contains the same ssortingng as strAdd 

Je travaille dans un projet de maintenance de l’ancien code MFC, donc la conversion des appels de fonctions obsolètes n’est pas applicable.

inet_ntoa() convertit un in_addr en chaîne:

La fonction inet_ntoa convertit une adresse réseau Internet (Ipv4) en une chaîne ASCII au format décimal à pointillé standard Internet.

inet_addr() effectue le travail inverse

La fonction inet_addr convertit une chaîne contenant une adresse IPv4 en points décimaux en une adresse correcte pour la structure IN_ADDR

PS c’est le premier résultat googler “in_addr to ssortingng”!

Pour convertir une chaîne en in-addr:

 in_addr maskAddr; inet_aton(netMaskStr, &maskAddr); 

Pour convertir in_addr en chaîne:

 char saddr[INET_ADDRSTRLEN]; inet_ntop(AF_INET, &inaddr, saddr, INET_ADDRSTRLEN); 

Cet exemple montre comment convertir une chaîne en ip et viceversa:

 struct sockaddr_in sa; char ip_saver[INET_ADDRSTRLEN]; // store this IP address in sa: inet_pton(AF_INET, "192.0.1.10", &(sa.sin_addr)); // now get it back sprintf(ip_saver, "%s", sa.sin_addr)); // prints "192.0.2.10" printf("%s\n", ip_saver); 

Le troisième paramètre inet_pton est un pointeur sur une structure in_addr . Après un appel inet_pton réussi, la structure in_addr sera renseignée avec les informations d’adresse. Le champ S_addr la structure contient l’adresse IP dans l’ordre des octets du réseau (ordre inverse).