关于inet_aton和inet_ntoa(perl)
得到DNS地址的两个主要函数是Socket模块中的inet_aton()函数,用来保存DNS地址,然后使用inet_ntoa()函数把保存的地址转换成IP地址。
l inet_aton HOSTNAME
Takes a string giving the name of a host, and translates that to an opaque string (if programming in C, struct in_addr). Takes arguments of both the 'rtfm.mit.edu' type and '18.181.0.24'. If the host name cannot be resolved, returns undef. For multi-homed hosts (hosts with more than one address), the first address found is returned.
For portability do not assume that the result of inet_aton() is 32 bits wide, in other words, that it would contain only the IPv4 address in network order.
l inet_ntoa IP_ADDRESS
Takes a string (an opaque string as returned by inet_aton(), or a v-string representing the four octets of the IPv4 address in network order) and translates it into a string of the form 'd.d.d.d' where the 'd's are numbers less than 256 (the normal human-readable four dotted number notation for Internet addresses).
e.g.
use Socket;
my $SiteName;
my $Address;
$SiteName = 'ebs12.hand-china.com';#$SiteName = '192.168.11.13';
$Address = inet_ntoa(inet_aton$SiteName);
print inet_aton($SiteName),"/n";
print "The DNS address of ebs12.hand-china.com is $Address/n";
结果:
括_
The DNS address of ebs12.hand-china.com is 192.168.11.13
我们可以看到print inet_aton($SiteName),"/n";打印出来的是“括_”。所以,我们可以得到inet_aton()函数返回的是“an opaque string”,一个模糊的字符串。
再看print "The DNS address of ebs12.hand-china.com is $Address/n";
打印出来的结果是“The DNS address of ebs12.hand-china.com is 192.168.11.13”。所以,我们可以得出inet_ntoa()函数返回的是IP地址。