home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl_ste.zip / auto / Net / FTP / port.al < prev    next >
Text File  |  1997-11-28  |  872b  |  39 lines

  1. # NOTE: Derived from ./blib/lib/Net/FTP.pm.  Changes made here will be lost.
  2. package Net::FTP;
  3.  
  4. sub port
  5. {
  6.  @_ == 1 || @_ == 2 or croak 'usage: $ftp->port([PORT])';
  7.  
  8.  my($ftp,$port) = @_;
  9.  my $ok;
  10.  
  11.  delete ${*$ftp}{'net_ftp_intern_port'};
  12.  
  13.  unless(defined $port)
  14.   {
  15.    # create a Listen socket at same address as the command socket
  16.  
  17.    ${*$ftp}{'net_ftp_listen'} ||= IO::Socket::INET->new(Listen    => 5,
  18.                                         Proto     => 'tcp',
  19.                                         LocalAddr => $ftp->sockhost, 
  20.                                        );
  21.   
  22.    my $listen = ${*$ftp}{'net_ftp_listen'};
  23.  
  24.    my($myport, @myaddr) = ($listen->sockport, split(/\./,$listen->sockhost));
  25.  
  26.    $port = join(',', @myaddr, $myport >> 8, $myport & 0xff);
  27.  
  28.    ${*$ftp}{'net_ftp_intern_port'} = 1;
  29.   }
  30.  
  31.  $ok = $ftp->_PORT($port);
  32.  
  33.  ${*$ftp}{'net_ftp_port'} = $port;
  34.  
  35.  $ok;
  36. }
  37.  
  38. 1;
  39.