home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _92edbb5f830e60526f80de9c1c8c54bb < prev    next >
Text File  |  2000-03-15  |  4KB  |  130 lines

  1. #
  2. # TEST-ASYNC.PL
  3. # Test Win32::Internet's Asynchronous Operations
  4. # by Aldo Calpini <dada@divinf.it>
  5. #
  6. # WARNING: this code is most likely to fail with almost-random errors
  7. #          I don't know what is wrong here, any hint will be greatly
  8. #          appreciated! 
  9.  
  10. use Win32::Internet;
  11.  
  12. $params{'flags'} = INTERNET_FLAG_ASYNC;
  13. $params{'opentype'} = INTERNET_OPEN_TYPE_DIRECT;
  14. $I = new Win32::Internet(\%params);
  15.  
  16. # print "Error: ", $I->Error(), "\n";
  17. print "I.handle=", $I->{'handle'}, "\n";
  18.  
  19. $return = $I->SetStatusCallback();
  20. print "SetStatusCallback=$return";
  21. print "ERROR" if $return eq undef;
  22. print "\n";
  23.  
  24. $buffer = $I->QueryOption(INTERNET_OPTION_READ_BUFFER_SIZE);
  25. print "Buffer=$buffer\n";
  26.  
  27. $host = "ftp.activeware.com";
  28. $user = "anonymous";
  29. $pass = "dada\@divinf.it";
  30.  
  31.  
  32. print "Doing FTP()...\n";
  33.  
  34. $handle2 = $I->FTP($FTP, $host, $user, $pass, 21, 1);
  35.  
  36. print "Returned from FTP()...\n";
  37.  
  38. ($n, $t) = $I->Error();
  39.  
  40. if($n == 997) {
  41.   print "Going asynchronous...\n";
  42.   ($status, $info) = $I->GetStatusCallback(1);
  43.   while($status != 100 and $status != 70) {
  44.     if($oldstatus != $status) {
  45.       if($status == 60) {
  46.         $FTP->{'handle'} = $info;
  47.       } elsif($status == 10) {
  48.         print "resolving name...                   \n";
  49.       } elsif($status == 11) {
  50.         print "name resolved...                    \n";
  51.       } elsif($status == 20) {
  52.         print "connecting...                       \n";
  53.       } elsif($status == 21) {
  54.         print "connected...                        \n";
  55.       } elsif($status == 30) {
  56.         print "sending...                          \n";
  57.       } elsif($status == 31) {
  58.         print "$info bytes sent.                   \n";
  59.       } elsif($status == 40) {    
  60.         print "receiving...                        \n";
  61.       } elsif($status == 41) {      
  62.         print "$info bytes received.               \n";
  63.       } else {
  64.         print "status=$status\n";
  65.       }    
  66.     }
  67.     $oldstatus = $status;
  68.     ($status, $info) = $I->GetStatusCallback(1);
  69.   }
  70. } else {
  71.   print "Error=", $I->Error(), "\n";
  72. }
  73. print "FTP.handle=", $FTP->{'handle'}, "\n";
  74. print "STATUS(after FTP)=", $I->GetStatusCallback(1), "\n";
  75.  
  76. #                                    "/pub/microsoft/sdk/activex13.exe",
  77.  
  78. print "Doing Get()...\n";
  79.  
  80. $file = "/Perl-Win32/perl5.001m/currentBuild/110-i86.zip";
  81.  
  82. $FTP->Get($file, "110-i86.zip", 1, 0, 2);
  83.  
  84. print "Returned from Get()...\n";
  85.  
  86. ($n, $t) = $I->Error();
  87. if($n == 997) {
  88.   print "Going asynchronous...\n";
  89.   $bytes = 0;
  90.   $oldstatus = 0;
  91.   ($status, $info) = $I->GetStatusCallback(2);
  92.   while($status != 100 and $status != 70) {
  93.     # print "status=$status info=$info\n";
  94.     # if($oldstatus!=$status) {
  95.       if($status == 10) {
  96.         print "resolving name...                   \n";
  97.       } elsif($status == 11) {
  98.         print "name resolved...                    \n";
  99.       } elsif($status == 20) {
  100.         print "connecting...                       \n";
  101.       } elsif($status == 21) {
  102.         print "connected...                        \n";
  103.       #} elsif($status == 30) {
  104.       #  print "sending...                          \n";
  105.       } elsif($status == 31) {
  106.         print "$info bytes sent.                   \n";
  107.       #} elsif($status == 40) {    
  108.       #  print "receiving...                       \n";
  109.       } elsif($status == 41) {      
  110.         $bytes = $bytes+$info;
  111.         print "$bytes bytes received.              \n";
  112.       #} else {
  113.       #  print "status=$status\n";
  114.       }
  115.     # }
  116.     $oldstatus = $status;
  117.     undef $status, $info;
  118.     ($status, $info) = $I->GetStatusCallback(2);
  119.   } 
  120. } else {
  121.   print "Error=[$n] $t\n";
  122. }
  123. print "\n";
  124. ($status, $info) = $I->GetStatusCallback(2);
  125. print "STATUS(after Get)=$status\n";
  126. print "Error=", $I->Error(), "\n";
  127. exit(0);
  128.  
  129.  
  130.