- 论坛徽章:
- 0
|
搞定了,use Socket; 希望以后的人少走弯路。
这需求太恶心人了!!!
#######################################
use Socket;
use IO::Handle;
use Getopt::Std;
my %option;
getopts("u:c:p:", \%option);
my $url=$option{u};
my $cookie=$option{c} if exists($option{c});
my $localport=$option{p};
(my $remote_host, my $uri)= $url=~/http:\/\/(.*?)\/(.*)/;
socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$internet_addr = inet_aton($remote_host)
or die "Couldn't convert $remote_host into an Internet address: $!\n";
$paddr = sockaddr_in("80", $internet_addr);
my $inet_addr = inet_aton("172.16.63.204" ;
my $localaddr = sockaddr_in($localport, $inet_addr);
bind(SOCKET, $localaddr) or die "bind: $!";
connect(SOCKET, $paddr)
or die "Couldn't connect to $remote_host remote_port : $!\n";
SOCKET->autoflush(1);
if (exists($option{c}))
{
print SOCKET "GET /$uri HTTP/1.1\r\nHost: 10.3.10.1\r\nCookie: $cookie\r\nConnection: close\r\n\r\n" ;
} else {
print SOCKET "GET /$uri HTTP/1.1\r\nHost: 10.3.10.1\r\nConnection: close\r\n\r\n";
}
my $answer=undef;
while (<SOCKET>
{
$answer.=$_;
}
print "$answer\n";
close(SOCKET);
############ 运行 ###################
stress204# perl sourceport2.pl -u http://172.16.63.31/hostname.txt -p 2000
HTTP/1.1 200 OK
Server: nginx/0.5.33
Date: Wed, 17 Mar 2010 13:39:23 GMT
Content-Type: text/plain
Last-Modified: Tue, 11 Aug 2009 14:53:39 GMT
Accept-Ranges: bytes
Content-Length: 14
Connection: close
Via: 1.1 AN-0001242745426001
172.16.64.207
stress204# perl sourceport2.pl -u http://172.16.63.31/hostname.txt -p 2000
HTTP/1.1 200 OK
Server: nginx/0.5.33
Date: Wed, 17 Mar 2010 13:39:24 GMT
Content-Type: text/plain
Last-Modified: Tue, 11 Aug 2009 14:53:39 GMT
Accept-Ranges: bytes
Content-Length: 14
Connection: close
Via: 1.1 AN-0001242745426001
172.16.64.207 |
|