http://www.perlmonks.org/?node_id=718648
# server.pl
use strict;
use warnings;
use Data::Dumper;
use JSON::XS;
use IO::Socket;
use Sys::Hostname;
use constant BUFSIZE => 1024;
my $JSONObject = JSON::XS->new->ascii->pretty->allow_nonref();
my $host?? = hostname;
my $port?? = shift || '10280';
my $socket = new IO::Socket(
? Domain??? => PF_INET,
? Proto???? => getprotobyname('tcp'),
? LocalAddr => $host,
? LocalPort => $port,
? Listen??? => 1,?????????????????????? #SOMAXCONN,
??????????????????????????????????????? #ReuseAddr => SO_REUSEADDR,
) or die $@;
my $buffer;
print "Waiting to do service...n";
while (my $client = $socket->accept) {
? print "Client: ",$client->peerhost," Connected..n";
? syswrite($client,"Reached Servern",BUFSIZE);
? if (sysread($client,$buffer,BUFSIZE) > 0) {
??? my @AoH = $JSONObject->decode($buffer);
??? print "AoH: " . Dumper(@AoH);
? }
}
?
-----------------# client.pl
use strict;
use warnings;
use JSON::XS;
use IO::Socket;
use constant BUFSIZE => 1024;
my $JSONObject = JSON::XS->new->ascii->pretty->allow_nonref();
my @AoH = (
? {
??? husband => "barney",
??? wife??? => "betty",
??? son???? => "bamm bamm",
? },
? {
??? husband => "george",
??? wife??? => "jane",
??? son???? => "elroy",
? {
??? husband => "homer",
??? wife??? => "marge",
??? son???? => "bart",
);
my $host = shift or die "Usage: client.pl host [port]n";
my $port = shift || '10280';
my $socket = new IO::Socket(
? Domain?? => PF_INET,
? PeerAddr => $host,
? PeerPort => $port,
? Proto??? => getprotobyname('tcp'),
? Timeout? => 60,
) or die $@;
my $buffer;
if (sysread($socket,BUFSIZE) > 0) {
? syswrite(STDOUT,$buffer);
}
syswrite($socket,$JSONObject->encode(@AoH),BUFSIZE);
close($socket);
-------------------------
接受中文字符解码:
? my $ll = encode("gb2312",decode("utf8",$mm->{$_}));
?
最简单的json使用
client: use JSON; $heap->{json} = JSON->new->ascii; my $j_param = $heap->{json}->encode(%color); $heap->{server}->put($j_param); server: my $c_par = from_json($input);