inet_aton нормализация IPv4-адреса
Не inet_aton
предположить нормализовать точечную версию интернет-адреса? почему я получаю разные выходные значения для примера ниже?
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;
}
выход:
addr.sin_addr:419604672
addr2.sin_addr:352495808
1 ответ
Решение
Из документации
компоненты точечного адреса могут быть указаны в десятичном, восьмеричном (с лидирующим 0) или> шестнадцатеричном с лидирующим 0X)
это означает, что
char USER_IP[16] = "192.168.002.025";
подразумевает 192 168 2 (25 октал == 21) и
char USER_IP2[16] = "192.168.2.25";
подразумевает 192 168 2 25