in reply to Creating a TCP client, that receives and responds in individual packets

Hope this helps:
server.pl: use strict; use IO::Socket; my $server = IO::Socket::INET->new(Proto => "tcp", Listen => 5, LocalPort => "3000", Timeout => 2000) || die "failed to start server\n"; print "server wait for client to connect ...\n"; my $connection = $server->accept; print "a client connected\n"; while (1) { my $req; $connection->recv($req, 7000); print "server received $req\n"; my $res = $req + 1; print $connection $res; print "server responsed $res\n"; } client.pl use strict; use IO::Socket; my $client = IO::Socket::INET->new(Proto => "tcp", PeerAddr => "172.135.2.54", PeerPort => "3000", Timeout => 2) || die "failed to connect to a server\n"; my $req = 1; while (1) { print $client $req; print "client sent $req\n"; my $res; $client->recv($res, 7000); print "client received $res\n"; $req = $res; }
  • Comment on Re: Creating a TCP client, that receives and responds in individual packets
  • Download Code

Replies are listed 'Best First'.
Re: Re: Creating a TCP client, that receives and responds in individual packets
by Anonymous Monk on Nov 11, 2002 at 18:25 UTC
    pg, you've solved my problem, thanks a lot. I see how its done now, before I was using a loop like: while (sysread($handle, $byte, 1) == 1) { print; } to receive every byte, as the server sent no line feeds or other control characters to seperate its messages. It simply sends them as individual tcp packet's - i found this out using Ethereal (packet sniffer). Thanks to everyone to replied.