【问题标题】:Perl: per-socket restriction of IO::Socket::SSL to IPv4Perl:IO::Socket::SSL 到 IPv4 的每个套接字限制
【发布时间】:2015-11-10 11:56:46
【问题描述】:

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

现在我不确定将哪个选项与 IO::Socket::SSL 一起使用。 Perldoc 读取“您可以通过将 AF_INET 指定为 theDomain 来强制 IPv4”,这似乎有点乱码。

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

最好, 马库斯

【问题讨论】:

    标签: perl ipv6 ipv4


    【解决方案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);
        }
        ...
    }
    

    【讨论】:

    • 谢谢,我正在寻找 Domain=>AF_INET 部分
    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2021-05-18
    • 1970-01-01
    相关资源
    最近更新 更多