我只是注意到,如果我给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
0x
或0X
,或八进制, 0X
0
)来指定一个IPv4地址:参见inet_addr()
的定义(由getaddrinfo()
为AF_INET
地址系列)。
据我所知,它并没有说如何终止输入字符串,所以它停在一个空间的事实可能只是一个实现的细节; 但如果通过getaddrinfo()
或inet_addr()
解析,则“10”肯定是IPv4地址的允许表示形式。 (有趣的是,这个表单不被inet_pton()
和AF_INET
允许 – 只接受标准的四部分表单。)