2015-11-10 20 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