- 论坛徽章:
- 0
|
我有如下代码,这个代码可以正常的得到网页的内容,也就是文本内容。但却无法将二进制文件的内容读出,请问问题是出在请求方式还是读写方式上呢?能否给出正确的方式呢?我已经翻阅了好多资料,可是怎么改也不对。还望指教。
请求网页时是200,但是请求zip文件或者MP3时就变成400了。
代码如下:
#!perl!
#
use strict;
use IO::Socket qw( EFAULT :crlf);
my $data;
$/ = CRLF;
my ($host,$port,$path);
my $address_new = shift;
($host,$port,$path) = ($1,$2||80,$3) if($address_new =~ m!^(?:http://)?(.*?)(?: [0-9]+))?(/.*)$!x);
print "[$host] [$port] [$path]\n\n";
my $socket = IO::Socket::INET->new(
PeerAddr => $host,
PeerPort => $port,
Type => SOCK_STREAM,
Timeout => 20
) or die "Can't connect !";
print $socket "GET $path HTTP/1.1",CRLF,CRLF;
print $socket "HOST host port";
my $out;
read ($socket,$out,1024);
print "$out\n";
close $socket; |
|