I get an unknown error from the command prompt.
My goal was to fetch a list of numbers for the socket port.
Maybe it's just an XP problem ??

#!perl -w
my$hostprog = 'localhost';
if(open(LOG, ">>./log.txt")){
}else{print "Couldn't open LOG";}
use IO::Socket;
use LWP::Simple;
#get a list of socket numbers of the listening program
my$numbers = get("http://$hostprog/updates/templates/listen.txt";);
[EMAIL PROTECTED] = split(/\|/,$numbers);
######    Open a Socket    ######
my$socket;
foreach((1121,@numbers)){if(&get_sock($_)){last;}}
sub get_sock{
 my($number) = @_;
 print "$number\n";
 $socket = new IO::Socket::INET(
  PeerAddr => $hostprog,
  PeerPort => $number,
         Type => SOCK_STREAM,
         Reuse => 1,
         Proto => 'tcp'
        );
 
 if($socket){$socket->autoflush(1);print "\n using $number";return 1;}
}
#wait for a response from client
unless($socket){print "Couldn't open socket., $!";exit(0)}
while ($response = $socket->accept()) { # receive a request
 print LOG "Connected from: ", $response->peerhost(); # Display messages
 print LOG " Port: ", $response->peerport(), "\n"; 
 my$result;  # variable for Result
 while(<$response>) {
   if(/^~~~end~~~/){last;} # if message is 'end' 
                                        # then exit loop
  print LOG "Received: $_"; # Print received message
  #CHECK ALL THE SERVERNAMES ON THE BLACK LIST
  if(open(BAD, "../dt/no_templates.txt")){
   while(<BAD>){
    if(/^$servername$/){
     print $response "Error: A complaint against $servername has disabled 
this transfer.~~~end~~~";
    }
   }
   close(BAD);
  }
  #HERE YOU WANT TO GET THE TEMPLATE FILES AND SEND THEM BACK separated by 
~~~===~~~
  if(open(TEMPLATE, "/$pkg::htmlroot/updates/templates/$_/template.txt")){
   $send_files = <TEMPLATE>;$send_files .= '~~~===~~~';
   close(TEMPLATE);
  }else{$send_files .= '~~~===~~~Error: template.txt';print LOG "Error: 
template.txt\n";}
  if(open(KEYWORDS, "/$pkg::htmlroot/updates/templates/$_/keywords.txt")){
   $send_files .= <KEYWORDS>;$send_files .= '~~~===~~~';
   close(KEYWORDS);
  }else{$send_files .= '~~~===~~~Error: keywords.txt';print LOG "Error: 
keywords.txt\n";}
  if(open(AUTHOR, "/$pkg::htmlroot/updates/templates/$_/author.txt")){
   $send_files .= <AUTHOR>;$send_files .= '~~~===~~~';
   close(AUTHOR);
  }else{$send_files .= '~~~===~~~Error: author.txt';print LOG "Error: 
author.txt\n";}
  print $response "BEGIN$send_files";  
     # Send received message back 
                                        # to verify
 }
 chomp;   # Remove the 
 if(/^~~~end~~~/){ # You need this. Otherwise if 
    # the client terminates abruptly
    # The server will encounter an 
    # error when it sends the result back
    # and terminate
  print $response "~~~end~~~";  # send the result message
  print LOG "Done sending files\n\n"; # Display sent message
 }
 print LOG "Closed connection\n"; # Inform that connection to client is closed
 close $response; # close client
 print LOG "Waiting...\n"; # Wait again for next request
}

Reply via email to