ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : Code>JPerl>chunkdecode



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

  1. chunkdecode
  2. chunkencoding µÈ°ÍÀ» µðÄÚµùÇÑ´Ù
  3. acidd15
  4. Version 0.1
  5. 2004/12/27


¼³¸í

Transfer-Encoding: chunked
À§¿Í°°ÀÌ ¿£ÄÚµùµÈ ¹ÙµðÀÇ µ¥ÀÌÅ͸¦ µðÄÚµù ÇÑ´Ù.

»ç¿ë¹æ¹ý


ÄÚµå

#!/usr/bin/perl 
 
use Socket; 
 
sub parseURL{ 
 
    my ($url)=@_; 
 
    return $url=~m/(https?):\/\/([^\/]*)(.*)/; 
 
} 
 
sub chunkDecode{ 
 
    my ($chunkdata)=@_; 
    my $chunk_header=0; 
    my $unchunk=""; 
 
    while(1){ 
 
        if($chunk_header==0){ 
 
            if($chunkdata=~/([0-9a-fA-F]+)[ \t]*\n/g){ 
 
                $offset=pos($chunkdata); 
                $chunksize=hex($1); 
 
                if($chunksize==0){ 
 
                    goto end_of_chunk_data; 
 
                } 
 
                $unchunk.=substr($chunkdata,$offset,$chunksize); 
 
                $chunkdata=substr($chunkdata,$offset+$chunksize); 
                $chunkheader=1; 
 
            }else{ 
 
                goto end_of_chunk_data; 
 
            } 
 
        }else{ 
 
            if($chunkdata=~/\n([0-9a-fA-F]+)[ \t]*\n/g){ 
 
                $offset=pos($chunkdata); 
                $chunksize=hex($1); 
 
                if($chunksize==0){ 
 
                    goto end_of_chunk_data; 
 
                } 
 
                $unchunk.=substr($chunkdata,$offset,$chunksize); 
 
                $chunkdata=substr($chunkdata,$offset+$chunksize); 
 
            }else{ 
 
                goto end_of_chunk_data; 
 
            } 
 
        } 
 
    } 
 
    end_of_chunk_data: 
 
    return $unchunk; 
 
} 
 
$url="http://phpschool.com/zbbs/zboard.php?id=talkbox&page=1&sn1=&divpage=4&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=22860"; 
 
($protocol,$host,$uri)=parseURL($url); 
 
$port="80"; 
 
#create socket descriptor 
socket(SH,PF_INET,SOCK_STREAM,getprotobyname('tcp')) || die $!; 
 
#connecting to server 
my $sin=sockaddr_in($port,inet_aton($host)); 
connect(SH,$sin) || die $!; 
 
my $fh = select SH; 
$| = 1; 
select $fh; 
 
$body="GET ".$uri." HTTP/1.1\nConnection: close\nHost: ".$host."\n\n"; 
 
syswrite(SH,$body,length($body)); 
 
while(($len=sysread(SH,$read_buffer,256)>0)){ 
 
        $content.=$read_buffer; 
 
} 
 
$content=~/\n\n/g; 
$offset=pos($content); 
 
$body=substr($content,$offset); 
 
print chunkDecode($body); 
 
close(SH); 
 

º¯°æ»çÇ×


2004/01/08

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.