Perl:IO :: Socket :: SSL到IPv4的每插槽限制

时间:2015-11-10 11:56:46

标签: perl ipv6 ipv4

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

现在我不确定使用IO :: Socket :: SSL的选项。 Perldoc读取"您可以通过指定强制IPv4并将AF_INET作为域"这似乎有点乱码。

如果有人能提供一个如何做到这一点的例子,我会感激不尽。为了澄清,我不想使用IO :: Socket :: SSL qw(inet),因为其他连接不会受到影响。

最佳, 马库斯

1 个答案:

答案 0 :(得分:1)

如果你在每个系统上循环,这个(未经测试的)代码应该做你想要的。如果您有多个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);
    }
    ...
}