in reply to Re: Two way socket
in thread Two way socket

Great!
In order to use the code
else { # It's an established connection print "established s $s listener $listener\n"; print $listener "Why don't you call me anymore?\n" +; my $buf = <$s>; # Try to read a line # Was there anyone on the other end? if( defined $buf ) { # If they said goodbye, close the socket. +If not, # echo what they said to us. if ($buf =~ /goodbye/i) { print $s "See you later!\n"; $readable->remove($s); $s->close; } else { print $s "You said: $buf\n"; }
How would one implement a client that is continuously connected to the server, until a message like "goodbye" is keyed?

Replies are listed 'Best First'.
Re: Re: Re: Two way socket
by pg (Canon) on Oct 16, 2003 at 05:47 UTC
    Wrote this sample for you with Perl threads module:
    server.pl: use strict; use threads; use IO::Socket::INET; $| ++; my $listener = IO::Socket::INET->new(LocalPort => 3126, Listen => 5, Reuse => 1) || die "Cannot create socket\n"; my $client; my $client_num = 0; while (1) { $client = $listener->accept; threads->create(\&start_thread, $client, ++ $client_num); } sub start_thread { my ($client, $client_num) = @_; print "thread created for client $client_num\n"; while (1) { my $req; $client->recv($req, 700000); return if ($req eq ""); print $client $req; } return; } client.pl: use strict; use IO::Socket; my $server = IO::Socket::INET->new(Proto => "tcp", PeerPort => 3126, PeerAddr => "localhost", Timeout => 2000) || die "failed to connect\n"; for (1..100) { print $server $_; my $res; $server->recv($res, 70000); print $res; }