如何在perl中设置Time-To-Live
套接字选项?
setsockopt()
的参数是什么,或者有更好的方法吗?
以下在Linux上对我有效:
IPv4
use Socket;
...
socket (SOCKET, ...) or die "Can't create socket: $!";
my $ip = getprotobyname ('ip'); # just in case it ever changes ;-)
my $opname = IP_TTL;
my $opval = int $ttl; # if $ttl is a string, convert to int
setsockopt (SOCKET, $ip, $opname, $opval) or warn "setsockopt failed: $!";
IPv6
use Socket("SOCK_STREAM", "IPV6_UNICAST_HOPS");
...
my $ipv6 = getprotobyname('ipv6');
my $opname = IPV6_UNICAST_HOPS;
my $opval = int $ttl;
setsockopt (SOCKET,$ipv6,$opname,$opval) or warn "setsockopt failed: $!";