如何在perl中设置传出数据包的TTL



如何在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: $!";

最新更新