Perl:IO::Socket::SSL 到 IPv4 的每个套接字限制

Perl: per-socket restriction of IO::Socket::SSL to IPv4

我使用 IO:Socket::SSL 连接到许多上游资源。我想暂时通过使用 IPv4 来规避其中一个来源存在 IPv6 连接问题。为此,我在我的 conf 文件中使用了 IPv4 地址而不是主机名。但是,我更愿意使用主机名和一个附加选项来为该源强制使用 IPv4。

现在我不确定 IO::Socket::SSL 使用什么选项。 Perldoc 读取 "you can either force IPv4 by specifying and AF_INET as theDomain" 似乎有点乱码。

如果有人能举例说明如何做到这一点,我将不胜感激。澄清一下,我不想使用 IO::Socket::SSL qw (inet),因为其他连接不会受到影响。

最好的, 马库斯

如果您在每个系统上循环,此(未经测试的)代码应该可以满足您的要求。如果您有多个 v4 服务器,您可以将它们全部放入一个数组中,然后不要对单个名称执行 eq,而是使用 grep

for (@servers){

    my %params = (
        Proto       => $proto,
        PeerAddr    => $_,
        PeerPort    => $port,
        ...
    );

    my $sock;

    if ($_ eq 'ipv4_servername'){
        $sock = IO::Socket::SSL->new(%params, Domain => AF_INET);
    }
    else {
        $sock = IO::Socket::SSL->new(%params);
    }
    ...
}