Dans les sockets, j'ai écrit le programme du serveur client. J'ai d'abord essayé d'envoyer la chaîne normale parmi eux, ça envoie bien. Après cela, j'ai essayé d'envoyer les valeurs de hachage et de tableau du client au serveur et du serveur au client. Quand j'imprime les valeurs en utilisant Dumper, cela me donne seulement la valeur de référence. Que dois-je faire pour obtenir les valeurs réelles dans le serveur client?Comment puis-je partager des structures de données Perl via un socket?
programme serveur:
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" ;
programme client
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 ;
}
}
J'ai donné mon exemple de programme sur ce que je fais. Quelqu'un peut-il me dire ce que je fais erroné dans ce code? Et ce que je dois faire pour accéder aux valeurs de hachage?
Bonne réponse. Il est important de souligner que vous avez utilisé 'nfreeze' (par opposition à' freeze'), ce qui permet de rendre les données encodées Storable plus portables. – daotoad
Merci et terminé. – darch