12 use constant DEFAULT_PORT=>80;
13 use constant BUFFER_LENGTH=>0x1000;
16 getopts "hH",\%opts or die "getopts()";
17 @ARGV==1 && $ARGV[0]=~m#^http://([^/:]+)(?::(\d+))?(/.*)$#
18 or die "Syntax: $0 [-hH] http://hostname/pathname";
19 my($host,$port,$path)=($1,$2,$3);
20 defined $port or $port=DEFAULT_PORT;
22 my $proto=getprotobyname "tcp" or die "getprotobyname \"tcp\": $!";
23 socket SOCK,PF_INET,SOCK_STREAM,$proto or die "socket PF_INET,SOCK_STREAM,\"tcp\": $!";
24 my $hostaddr=gethostbyname $host or die "hostname \"$host\": $!";
25 my $sockaddr=sockaddr_in $port,$hostaddr or die "sockaddr_in(".inet_ntoa($hostaddr).":$port): $!";
26 connect SOCK,$sockaddr or die "connect \"$host\"(".inet_ntoa($hostaddr).":$port): $!";
28 print SOCK ($opts{"h"} ? "HEAD" : "GET")." $path HTTP/1.0\r\nHost: $host\r\n\r\n";
44 my $got=read SOCK,$buf,BUFFER_LENGTH;
45 defined $got or die "read: $!";
47 die "read()=$got (<0)" if $got<0;