getaddrinfo“10。 10。 10。 10”

我只是注意到,如果我给string“10.10.10”getaddrinfo我回到地址0.0.0.10。 在OS X(Lion)和Linux(CentOS 5.6)上的结果是一样的。 您可以使用以下方式轻松validation它:

$ curl 'http://10 . 10 . 10 . 10/' curl: (7) Failed to connect to 0.0.0.10: No route to host 

是否有这种行为的具体原因,或者我应该认为这是一个错误? 我会预料它将无法返回任何地址。

编辑:同样的结果为“10 asdf”,猜测是这样做的空间。

POSIX允许一个由单个数字组成的字符串(十进制,十六进制, 0X 0x0X ,或八进制, 0X 0 )来指定一个IPv4地址:参见inet_addr()的定义(由getaddrinfo()AF_INET地址系列)。

据我所知,它并没有说如何终止输入字符串,所以它停在一个空间的事实可能只是一个实现的细节; 但如果通过getaddrinfo()inet_addr()解析,则“10”肯定是IPv4地址的允许表示形式。 (有趣的是,这个表单inet_pton()AF_INET允许 – 只接受标准的四部分表单。)