------------------------------------------------------------------------------- Perl Fast IP Lookup This uses /etc/hosts and local named cache, before using DNS Thus if the host is already known it will report it almost instantally! perl -le 'print join(".", unpack("C4",(gethostbyname(shift))[4]))' `hostname` OR perl -e 'printf "%vd\n",(gethostbyname("'"$Machine"'"))[4]' Fast reverse lookup (can be faked by hacker) perl -MSocket -le 'print((gethostbyaddr(pack("C4",split("\\.",shift)),AF_INET))[0])' 132.234.250.63 ------------------------------------------------------------------------------- IP conversions. IP byte form to Number perl -le 'print unpack("N", 127.0.0.1)' IP string to Byte form, to Number perl -MSocket -le 'print unpack("N", inet_aton("127.0.0.1"))' Number to IP string perl -MSocket -le 'print inet_ntoa(pack("N", 2130706433))' Alturnative ( $, = '.' is array element separator on pint) perl -le '$ip = 2130706433; $, = "."; print map { (($ip>>8*($_))&0xFF) } reverse 0..3' ------------------------------------------------------------------------------- Perl Network Broadcast... $port = 8080; $sockaddr = "S n a4 x8";($name,$aliases,$proto) = getprotobyname('udp'); chop($hostname = `hostname`); ($name,$aliases,$type,$len,$myaddr) = gethostbyname($hostname); @myaddr=unpack("C4",$myaddr); pop(@myaddr);push(@myaddr,255); # works only for ff:ff:ff:00 subnet mask $broadaddr=pack("C4",@myaddr); $me = pack($sockaddr,&AF_INET, 0, $myaddr); $them = pack($sockaddr,&AF_INET, $port, $broadaddr); socket(S, &AF_INET, &SOCK_DGRAM, $proto) || die $!; setsockopt(S,&SOL_SOCKET,&SO_BROADCAST,1) || die $1; bind(S, $me) || die $!; send(S,"01234567 Hello everyone 01234567\n",0,$them) || die $!; -------------------------------------------------------------------------------