2015-11-10 18 views
0

我使用IO:Socket :: SSL连接到多个上游源。有一个IPv6连接问题,我想暂时使用IPv4来解决这个问题。为此,我在我的conf文件中使用了IPv4地址,而不是hostname。不过,我更愿意使用主机名和其他选项来强制IPv4使用此源。Perl:IO :: Socket :: SSL的每个套接字限制到IPv4

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

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

最佳, 马库斯

回答

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); 
    } 
    ... 
} 
+0

谢谢,Domain => AF_INET部分是我一直在寻找 – Marcus