Perl 5.8 threads and sockets problem

Jeremy Aiyadurai jeremygwa at hotmail.com
Sun Feb 23 18:56:48 CST 2003


Hello all,

I am new to the group.
I have a problem involving sockets and threads.

Basically, I want to be able to do two or more pop3 sessions simultaniously 
using a list of different pop3 accounts.
my problem is, I can logon to the first account, but when
it comes to the second account's turn (in the second thread), the socket 
cannot be created.

I am new to using threads and have little knowledge of sockets.

Your Help is much appreciated,

Thanks,

Jeremy A.

Below is my test script I am having trouble with.


#-----------------------------------------------------
use threads;
use Win32;
use IO::Socket qw(:DEFAULT :crlf);


my @thr;
my @Data;
$Data[0] = { 'UID' => "Jeremy", 'SVR' => "mail.host.net", 'PORT' => "110", 
'LOGIN' => "account1", 'PASS' => "******" };
$Data[1] = { 'UID' => "Dave", 'SVR' => "mail.bost.com", 'PORT' => "110", 
'LOGIN' => "account2", 'PASS' => "*****" };
my $i = 0;

sub Startup {
    while (1) {
      Win32::Sleep(4000);
        foreach my $account (@Data)
        {
                if(!open(T,"".$account->{'UID'}.".acc"))
                {
  		Win32::Sleep(40);
  		if($i != 0)
  		{
  		 $i = $i + 1;
  		}
  		$thr[$i] = 
threads->new(\&go,$account->{'UID'},$account->{'SVR'},$account->{'PORT'},$account->{'LOGIN'},$account->{'PASS'});
		$thr[$i]->join;
                }else
                {
                        close(T);
                }
                $i = $i - 1;

        }
  }
  @AC = -1;
}

Startup();



sub go($$$$$) {
print "$_[0],$_[1],$_[2],$_[3],$_[4],$_[5],$_[6]\n";

my $pop3C = IO::Socket::INET->new(Proto => 'tcp', PeerAddr => "$_[1]",
PeerPort => $_[2], Timeout => 60) or pop3CError ($_[1],$_[2]);
open(X,">".$_[1].".acc");
close(X);
print "in $_[1]\n";
sleep(1);
pop3close($pop3C);
$pop3C = undef;
unlink($_[1].".acc");
}


sub pop3CError ($$) {

print "Cannot connect to the the Pop3 server:$_[0], port:$_[1]\n";
exit;

}


sub pop3close ($) {
	if ($_[0]) {
	 shutdown ($_[0], 2);
	}
}
#-----------------------------------------------------





_________________________________________________________________
The new MSN 8: smart spam protection and 2 months FREE*  
http://join.msn.com/?page=features/junkmail




More information about the Victoria-pm mailing list