perl : Passing hash , array through socket program betwen client and server
        Posted  
        
            by pavun_cool
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by pavun_cool
        
        
        
        Published on 2010-05-13T04:10:47Z
        Indexed on 
            2010/05/13
            4:14 UTC
        
        
        Read the original article
        Hit count: 277
        
Hi All .
In sockets I have written the client server program . First I tried to send the normal string among them it sends fine . After that I am trying to send the hash and array values from client to server and server to client . When I printing the values using Dumper . It is giving me only reference . What Should I do for getting accessing the actual values in client server .
Server Program:
use IO::Socket;
use strict;
use warnings;
my %hash = ( "name" => "pavunkumar " , "age" => 20 ) ;
my $new  = \%hash ;
#Turn on System variable for Buffering output
$| = 1;
# Creating a a new socket
my $socket=
IO::Socket::INET->new(LocalPort=>5000,Proto=>'tcp',Localhost =>
        'localhost','Listen' => 5 , 'Reuse' => 1 );
die "could not create $! \n" unless ( $socket );
        print "\nUDPServer Waiting port 5000\n";
        my $new_sock =  $socket->accept();
        my $host =  $new_sock->peerhost();
        while(<$new_sock>)
        {
        #my $line = <$new_sock>;
        print Dumper "$host $_";
        print $new_sock $new . "\n";
        }
        print "$host is closed \n" ;
Client Program
use IO::Socket;                               
use Data::Dumper ;                            
use warnings ;                                
use strict ;                                  
my %hash  = ( "file" =>"log.txt" , size => "1000kb") ;
my $ref = \%hash ;
# This client for connecting the specified below address and port 
# INET function will create the socket file and establish the connection with
# server
my $port = shift || 5000 ;
my $host = shift || 'localhost';
my $recv_data ;
my $send_data;
my $socket = new IO::Socket::INET (
                                  PeerAddr  => $host ,
                                  PeerPort  => $port ,
                                  Proto => 'tcp', )
or die "Couldn't connect to Server\n";
while (1)
{
        my $line = <stdin> ;
        print $socket $ref."\n";
        if ( $line = <$socket> )
        {
                print Dumper  $line ;
        }
        else
        {
                print "Server is closed \n";
                last ;
        }
}
I have given my sample program about what I am doing , Can any one tell me what I am doing wrong in this code. And what I need to do for accessing the hash values .
Thanks in Advance
© Stack Overflow or respective owner