Ich habe den folgenden Code zum Auflisten der IP-Adresse eines Hosts.Ausgabe mit Std :: String
// Loop through all the linked list of address and get the ip addresses
for(p = res; p != NULL; p = p->ai_next){
void *addr;
string ipver;
if(p->ai_family == AF_INET){
// IPv4 address
sockaddr_in *ipv4 = (sockaddr_in*)p->ai_addr;
addr = &(ipv4->sin_addr);
ipver = "IPv4";
}
else{
// IPv6 address
sockaddr_in6 *ipv6 = (sockaddr_in6*)p->ai_addr;
addr = &(ipv6->sin6_addr);
ipver = "IPv6";
}
// use INET6_ADDRSTRLEN becuase we need it to big enough
// convert the ip from network(bits) to presentation(eg. 127.0.0.1)
inet_ntop(p->ai_family, addr, const_cast<char*>(ipstr.c_str()), INET6_ADDRSTRLEN);
// print it out
cout << ipver <<" " << ipstr << endl;
}
Das Problem ist, mit:
cout << ipver << " " << ipstr << endl;
Wenn diese Zeile bekomme ich keine Ausgabe ausgeführt wird. Aber wenn ich ipstr.c_str() wie folgt aufrufen:
cout << ipver <<" " << ipstr.c_str() << endl;
ich Ausganges.
Ich bin mit GCC 4.8
Wo wurde 'ipstr' deklariert? – timrau
'const_cast (ipstr.c_str())' - yikes. Wenn Sie sich dabei befinden (indem Sie const_cast verwenden), hören Sie auf und denken Sie darüber nach, was Sie tun. Es ist sehr wahrscheinlich, dass es das Falsche ist. –
@timrau es als std :: string deklariert, aber ich habe es nicht –