Imediatly after I execute the script I get one of the "disconected" messages that are printed when $sock->connected() no longer equals $server.
"connected If the socket is in a connected state the the peer address is returned. If the socket is not in a connected state then undef will be returned." #!/usr/bin/perl use IO::Socket; use threads; use threads::shared; use strict; use warnings; my $port = 80; my $connected : shared; my $user : shared; my $sender; my $receiver; my $checker; my $sock; my $skey; my $server : shared; print "Enter username: "; $user = <>; chomp $user; print "Enter server: "; $server = <>; chomp $server; $sock = IO::Socket::INET->new( PeerAddr => $server, PeerPort => $port, Proto => "tcp", Type => SOCK_STREAM) or die "Cannot connect to remote host"; if (login($user, $skey)){ $connected = 1; }else{ $connected = 0; shutdown($sock, 2); exit; } #$checker = threads->new(\&checker); $sender = threads->new(\&sender); $receiver = threads->new(\&receiver); while($connected){} sleep 4; shutdown($sock, 2); sub login { #put handshaking stuff here return 1; } sub logoff { #put exiting stuff here $connected = 0; } sub sender { my $msg; while($connected){ if($sock->connected() eq $server){ $msg = <>; if($msg eq "^quit"){ logoff; }else{ print $sock $msg; } }else{ print "Disconected1"; $connected = 0; } } } sub receiver { my $msg; while ($connected){ if( $sock->connected() eq $server){ $msg = <$sock>; print $msg; }else{ print "Disconected2"; $connected = 0; } } } sub checker { #not currently in use while ($sock->sockhost() eq $server){} print "Disconected\n"; $connected = 0; sleep 2; shutdown($sock, 2); } __________________________________ Do you Yahoo!? Yahoo! Mail - You care about security. So do we. http://promotions.yahoo.com/new_mail -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>