2013-04-05 15 views
7

non è inet_aton supporre di normalizzare la versione punto dell'indirizzo Internet? perché ottengo diversi valori di output per l'esempio di seguito?inet_aton normalizzazione di un indirizzo IPv4

int main(){ 
    char USER_IP[16] = "192.168.002.025"; 
    char USER_IP2[16] = "192.168.2.25"; 
    struct sockaddr_in addr; 
    struct sockaddr_in addr2; 

    inet_aton(USER_IP2, &addr.sin_addr); 
    inet_aton(USER_IP, &addr2.sin_addr); 

    printf("addr.sin_addr:%lu\n", addr.sin_addr); 
    printf("addr2.sin_addr:%lu\n", addr2.sin_addr); 


    return 0; 
} 

uscita:

addr.sin_addr:419604672 
addr2.sin_addr:352495808 

risposta

12

dalle documentation

componenti dell'indirizzo tratteggiata possono essere specificati in decimale, ottale (con un 0), o> esadecimale , con uno 0X iniziale)

ciò significa che

char USER_IP[16] = "192.168.002.025"; 

implica 192 168 2 (25 ottale == 21) e

char USER_IP2[16] = "192.168.2.25"; 

implica 192 168 2 25

Problemi correlati