Perl 和 IPv6 支持
如何从 Perl 使用 IPv4 和 IPv6 网络
要在 Perl 中启用 IPv6,请使用 IO::Socket::IP 替换任何使用 IO::Socket::INET 的地方,你将能够同时使用 IPv4 和 IPv6。Perl 5.14 已将其核心 Socket 模块作为 IPv6 函数的完整集合。
Perl 社区目前正在将较旧的模块转换为使用此功能。如果你使用尚未转换的模块,请向模块作者报告。
IO::Socket::IP 类提供了一个通用套接字,它可以使用 IPv4 或 IPv6 提供 TCP 连接或 UDP 数据包。它是其仅限 IPv4 的前身 IO::Socket::INET 的 API 兼容替换项。
IO::Socket::IP 应直接替换 IO::Socket::INET。它支持与 IO::Socket::INET 相同的构造函数参数和方法,大多数程序只需要更改“use”行和构造函数调用,即可支持 IPv6。
不幸的是,IO::Socket::INET 无法以不会导致向后不兼容的方式进行升级;现有代码可能期望 IO::Socket::INET 始终返回 IPv4 套接字。
Perl 5.14 附带 Socket 模块中的一组完整的 IPv6 相关函数。它提供了 AF_INET6 常量、sockaddr_in6 地址结构处理函数以及 getaddrinfo 和 getnameinfo 函数。IO::Socket::IP 在 Perl 5.14 上使用这些函数,使其成为一个无需其他模块或编译任何 XS 代码的简单安装。
在 5.14 之前的 Perl 版本中,IO::Socket::IP 需要更新版本的 Socket 通过 getaddrinfo 和 getnameinfo 函数提供 IP 协议中立支持。这在 CPAN 上可用,并且需要 XS 代码才能构建。