我有一台配置了IPv4和IPv6的Linux主机。
为了测试,我使用命令
禁用了IPv4ip addr del ipv4_address dev device_name
我正在使用getaddrinfo
通过设置AI_INET6
参数来检索主机的IPv6地址。但它给出了
名称或服务未知
对于使用
启用的IPv4地址,它可以正常工作ip addr del ipv4_address add device_name
设置AI_INET
参数。
#!/usr/bin/perl
use warnings;
use strict;
use Socket qw(:DEFAULT AI_CANONNAME IPPROTO_TCP IPPROTO_UDP IPPROTO_RAW SOCK_STREAM SOCK_DGRAM SOCK_RAW getaddrinfo inet_ntop inet_pton);
# map protocol number to name
sub pprotocol {
my ( $proto ) = @_;
if ( $proto == IPPROTO_TCP ) {
return 'IPPROTO_TCP';
}
elsif ( $proto == IPPROTO_UDP ) {
return 'IPPROTO_UDP';
}
else {
return 'n/a';
}