in reply to Issue with time() in loop?
Other than what others have already pointed out, I doubt that you need thread. My guess is that the reason you use thread, is to monitor multiple sockets at the same time. A better idea is to use IO::Select.
The following code demoes this. Just run one instance of the server and two instances of the client. Observe how the server receives messages from both clients without threading.
Server:
use strict; use warnings; use IO::Select; use IO::Socket::INET; my $server = IO::Socket::INET->new(Proto => "tcp", LocalAddr => "local +host", LocalPort => 3000, Listen => 10); my $selector = IO::Select->new(); { my $connection = $server->accept(); print "First client connected\n"; $selector->add($connection); } { my $connection = $server->accept(); print "Second client connected\n"; $selector->add($connection); } while (1) { for my $reader ($selector->can_read()) { my $line = <$reader>; print $line; } }
Client:
use strict; use warnings; use IO::Socket::INET; use IO::Select; my $connection = IO::Socket::INET->new(PeerAddr => "localhost", PeerPo +rt => 3000, Proto => "tcp"); for (1 .. 100) { print $connection "$_\n"; sleep(1); }
|
---|