Перекрестная публикация на: http://www.perlmonks.org/?node_id=988678
Я новичок в перле. Я пытаюсь получить все интерфейсы с подстановочными знаками, используя getaddrinfo (я использую Socket6 (IO:Socket:IP почему-то не работает на моем компьютере с Windows)), например:
use Socket;
use Socket6;
@res = getaddrinfo('<wildcard>', 3786, AF_UNSPEC, SOCK_STREAM);
while(scalar(@res)>=5){
($family, $socktype, $proto, $saddr, $canonname, @res) = @res;
($host, $port) = getnameinfo($saddr, NI_NUMERICHOST | NI_NUMERICSERV);
print ("\nhost= $host port = $port");
}
Мне интересно, какое значение я должен использовать для заполнителя, чтобы в результате я получил подстановочные адреса IPv4 и IPv6 (0.0.0.0 и ::), чтобы я мог привязываться к нему независимо от машины, которую я использую (IPv4 или IPv6). В 'c' указание нулевого указателя имени хоста делает свою работу, для perl я пробовал '', undef, но они возвращают петлевые адреса.