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);
}
...
}
我使用 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);
}
...
}