我刚刚注意到,如果我将字符串“10.10.10.10”提供给getaddrinfo,我会得到地址0.0.0.10。结果在OS (Lion)和Linux (CentOS 5.6)上是相同的。您可以使用以下命令轻松地进行验证:
$ curl 'http://10 . 10 . 10 . 10/'
curl: (7) Failed to connect to 0.0.0.10: No route to host有没有特定的原因导致这种行为,或者我应该认为这是一个bug?我本以为它不会返回任何地址。
编辑:“10asdf”的结果是一样的,我猜是空格造成的。
发布于 2011-10-13 06:52:28
POSIX允许使用由单个数字组成的字符串(十进制、十六进制加上前导0x或0X,或者八进制加上前导0)来指定IPv4地址:请参阅inet_addr()的定义(参考AF_INET地址族的getaddrinfo()定义)。
据我所知,它并没有说明输入字符串是如何终止的,因此它停在空格的事实可能只是一个实现细节;但是,如果由getaddrinfo()或inet_addr()解析,"10“肯定是IPv4地址的允许表示。(有趣的是,带有AF_INET的inet_pton()不允许使用此表单-它只接受标准的四组件表单。)
https://stackoverflow.com/questions/7736832
复制相似问题