Probleme mit gethostbyname bzw. mit h_addr_list



  • Hallo,

    ich habe ein Problem mit dem struct hostent bzw. mit der h_addr_list. Ich habe die hostent* informationen mit gethostbyname erhalten. Danach schreibe ich die IP infos von h_addr_list in einen UCHAR - Array.
    Bsp.:

    UCHAR ipaddr[4];
    hostent* host;
    char hostName[MAX_PATH];
    
    gethostname(hostname, MAX_PATH);
    
    host = gethostbyname(hostName);
    
    ipaddr[0] = host->h_addr_list[0][0];
    ipaddr[1] = host->h_addr_list[0][1];
    ipaddr[2] = host->h_addr_list[0][2];
    ipaddr[3] = host->h_addr_list[0][3];
    

    danach lasse ich die ipaddr in einen String schreiben:

    sprintf(ipstring, "%d.%d.%d.%d", ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);
    

    Wenn ich diesen String allerdings ausgeben lasse (z.B. mit MessageBox(...)) sind die ersten zwei ipaddr - Elemente Negativwerte (-64.-88...) obwohl meine IP mit 192.168... beginnt.

    Wie kann ich diesen Fehler beheben?



  • numm mal %u anstatt %d.
    %d ist ein wert mit vorzeichen und %u ohne. der wird das einfach falsch interpretieren



  • Danke für deine Hilfe


Anmelden zum Antworten