【发布时间】:2012-07-06 02:04:18
【问题描述】:
我有一个使用 TCP/IP 套接字的 Perl/Windows 应用程序,我需要添加 IPv6 支持。
我有一台运行 IPv6 的 Windows 7 64 位计算机,它带有 Hurricane Electric 隧道,它在 http://test-ipv6.com/ 上的得分为 10 分(满分 10 分),并且将访问仅限 IPv6 的站点,例如 http://loopsofzen.co.uk/。
它有 ActivePerl 5.14.2(我也试过 Strawberry Perl 5.16.0.1)。
这是一个简单的测试脚本:
use Socket qw( getaddrinfo );
$host = 'loopsofzen.co.uk';
$port = 80;
$hints = (socktype => SOCK_STREAM, family -> Socket::AF_INET6);
($err, @addrs) = getaddrinfo($host, 0);
die $err if $err;
这会产生错误:
no address associated with nodename at ip.pl line 6.
(新)getaddrinfo() 功能似乎可用,如果我将$host 设置为使用 IPv4 主机名,它确实有效。但是 IPv6 似乎根本不起作用。
我错过了什么?还是 Perl/Windows/IPv6 暂时还是一个失败的原因?
【问题讨论】:
-
你原来的问题有很多问题。您定义了 '$hints' 但不要在任何地方使用它。您将其初始化为键/值列表,即使它是标量。您似乎没有使用“严格”,因为这些变量都没有声明。您可以编辑代码,或者用一些实际的合理代码重新询问吗?