newbio has asked for the wisdom of the Perl Monks concerning the following question:
Hi,
I am trying to pass a hash reference from server to client. I then try to print the content of the hash. However, there appears some error in my programs and the client does not print the output and simply hangs on its terminal.
Please let me know what is a good way to do this.
Thank you.
#tcpserver.pl #!/usr/bin/perl use strict; use warnings; use IO::Socket::INET; use Storable qw(nfreeze); $| = 1; my ($socket,$clientsocket); my ($peeraddress,$peerport); my $data; my $line; my $inputfile = "list.txt"; my %names=(); my $reftohash; open(RF, "$inputfile"); # read file while ($line=<RF>) { chomp $line; $names{$line}=1; } #set hash reference $reftohash=\%names; $socket = new IO::Socket::INET ( LocalHost => 'localhost', LocalPort => '5000', Proto => 'tcp', Listen => 5, Reuse => 1 ) or die "ERROR in Socket Creation : $!\n"; while(1) { $clientsocket = $socket->accept(); print $clientsocket nfreeze($reftohash); } $socket->close(); ########## #tcpclient.pl #!/usr/bin/perl use strict; use warnings; use Data::Dumper; use IO::Socket::INET; use Storable qw(thaw); $| = 1; my $socket; my $data; my $data1; $socket = new IO::Socket::INET ( PeerHost => 'localhost', PeerPort => '5000', Proto => 'tcp', ) or die "ERROR in Socket Creation : $!\n"; $data = <$socket>; $data1 = thaw($data); print "Received from Server : $data1\n"; foreach my $i (keys %{$data1}) { print "$i=>$data1->{$i}\n"; } $socket->close();
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Passing hash reference over tcp client/server
by 2teez (Vicar) on Nov 12, 2012 at 23:47 UTC | |
by graff (Chancellor) on Nov 12, 2012 at 23:51 UTC | |
by newbio (Beadle) on Nov 13, 2012 at 14:42 UTC | |
by graff (Chancellor) on Nov 14, 2012 at 11:22 UTC |