A conversão de uma string para um endereço geralmente é realizada pela função POSIX getaddrinfo()
. Esta função primeiro verifica um endereço IP numérico usando inet_addr()
, e se isso falhar, Em seguida, tente resolver a cadeia como um nome de domínio. inet_addr()
interpreta números com 0 inicial como octal, portanto, por exemplo, 010
se tornaria 8
e 019
seriam um erro (e, portanto, seriam resolvidos como um nome de domínio). O mesmo comportamento ocorre no Linux e no Solaris também.
Em getaddrinfo()
:
If the specified address family is AF_INET or AF_UNSPEC, address strings using Internet standard dot notation as specified in
inet_addr()
are valid.
Em inet_addr()
:
All numbers supplied as parts in IPv4 dotted decimal notation may be decimal, octal, or hexadecimal, as specified in the ISO C standard (that is, a leading 0x or 0X implies hexadecimal; otherwise, a leading '0' implies octal; otherwise, the number is interpreted as decimal).
Anote o endereço 192.168.8.254 entre parênteses:
$ ping 192.168.010.254
PING 192.168.010.254 (192.168.8.254): 56 data bytes
Request timeout for icmp_seq 0