本文共 1009 字,大约阅读时间需要 3 分钟。
- #!/usr/bin/perl -w
- strict;
- Socket;
- Sys::Hostname;
-
- ( $count, $hisiaddr, $hispaddr, $histime,
- $host, $iaddr, $paddr, $port, $proto,
- $rin, $rout, $rtime, $SECS_OF_70_YEARS);
-
- $SECS_OF_70_YEARS = 2_208_988_800;
-
- $iaddr = (hostname());
- $proto = ("udp");
- $port = ("time", "udp");
- $paddr = sockaddr_in(0, $iaddr); # 0 means let kernel pick
-
- (SOCKET, PF_INET, SOCK_DGRAM, $proto) || "socket: $!";
- (SOCKET, $paddr) || "bind: $!";
-
- $| = 1;
- "%-12s %8s %s\n", "localhost", 0, ();
- $count = 0;
- for $host (@ARGV) {
- $count++;
- $hisiaddr = inet_aton($host) || "unknown host";
- $hispaddr = sockaddr_in($port, $hisiaddr);
- ((SOCKET, 0, 0, $hispaddr)) || "send $host: $!";
- }
-
- $rin = "";
- ($rin, (SOCKET), 1) = 1;
-
- # timeout after 10.0 seconds
- while ($count && ($rout = $rin, , , 10.0)) {
- $rtime = "";
- $hispaddr = (SOCKET, $rtime, 4, 0) || "recv: $!";
- ($port, $hisiaddr) = sockaddr_in($hispaddr);
- $host = ($hisiaddr, AF_INET);
- $histime = ("N", $rtime) - $SECS_OF_70_YEARS;
- "%-12s ", $host;
- "%8d %s\n", $histime - (), ($histime);
- $count--;
- }
转载地址:http://bnhvi.baihongyu.com/