【发布时间】:2012-07-04 17:50:39
【问题描述】:
如果在 perl 中给 gethostbyname 函数提供了错误格式的 IP 会发生什么?当给定错误格式的 IP(比如 1.1.1)时,我们的一个脚本表现得很奇怪。在调试时,发现 gethostbyname 在给定 1.1.1 时返回一个值..对此有什么想法吗?...在我看来,gethostbyname 应该返回 undef,对吗?
【问题讨论】:
-
顺便说一下,为了 IPv4/IPv6 透明兼容性,您可能希望调用
Socket::getaddrinfo而不是仅支持 IPv4 的旧版gethostbyname解析器。 -
感谢 Alan 和 LeoNerd 的回答。是的,gethostbyname 在第三个八位字节中添加了一个“0”,因此即使用户输入了错误的 3 个八位字节 IP,我们的脚本也会给出有效的输出。如何解决这个问题?
-
用户输入没有错。如果您想验证它是否具有更严格的格式要求,那么您应该这样做。也许是正则表达式测试或其他东西。但是这个值非常好,并且可以被各种地址解析函数接受,所以我不明白为什么应该拒绝它。
标签: perl gethostbyname