Wie konvertiere ich die Zeichenfolge in die IP-Adresse und umgekehrt?

Wie kann ich eine Zeichenfolge ipAddress (struct in_addr) und umgekehrt konvertieren? und wie kann ich unsigned long ipAddress anmelden? Vielen Dank

Verwenden Sie inet_ntop() und inet_pton() wenn Sie es anders herum benötigen. Verwenden Sie nicht inet_ntoa(), inet_aton() und ähnliches, da sie veraltet sind und ipv6 nicht unterstützen.

Hier ist eine nette Anleitung mit einigen Beispielen.

 // 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" 

Ich bin mir nicht sicher, ob ich die Frage richtig verstanden habe.

Wie auch immer, suchst du das?

 std::string ip ="192.168.1.54"; std::stringstream 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; 

Ausgabe:

 192 168 1 54 

Ich konnte String mit folgendem Code in DWORD und zurück konvertieren:

 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 string as strAdd 

Ich arbeite in einem Wartungsprojekt von altem MFC-Code, daher ist das Konvertieren veralteter functionenaufrufe nicht anwendbar.

inet_ntoa() konvertiert ein in_addr in string:

Die inet_ntoa-function konvertiert eine Internet-Netzwerkadresse (Ipv4) in eine ASCII-Zeichenfolge im Internetstandard-Dezimalformat.

inet_addr() führt den umgekehrten Job aus

Die function inet_addr konvertiert eine Zeichenfolge, die eine IPv4-Adresse mit Trennzeichen enthält, in eine richtige Adresse für die IN_ADDR-Struktur

PS das ist das erste Ergebnis googeln “in_addr zu string”!

So konvertieren Sie die Zeichenfolge in In-Adr:

 in_addr maskAddr; inet_aton(netMaskStr, &maskAddr); 

Um in_addr in string zu konvertieren:

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

Dieses Beispiel zeigt, wie man von String in IP konvertiert und umgekehrt:

 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); 

Der dritte Parameter inet_pton ist ein pointers auf eine in_addr Struktur. Nach einem erfolgreichen inet_pton Aufruf wird die in_addr Struktur mit den Adressinformationen in_addr . Das Feld S_addr Struktur enthält die IP-Adresse in Netzwerk-Byte-Reihenfolge (umgekehrte Reihenfolge).