2种简单的perl socket
方法一:**************************************************************client端
#!/usr/bin/perl
use strict;
use IO::Socket;
use Data::Dumper;
my $lsocket=IO::Socket::INET->new(
PeerAddr=>'127.0.0.1',
PeerPort=>'4321',
Proto=>'tcp',
);
print $lsocket "ls /home/ywang/;echo test;ifconfig";
$lsocket->shutdown(1);
while(){
print "$_";
#print Dumper $lsocket;
}
**************************************************************server端
#!/usr/bin/perl
use strict;
use IO::Socket;
my $lsocket=IO::Socket::INET->new(
LocalAddr=>'127.0.0.1',
LocalPort=>'4321',
Listen=>SOMAXCONN,
Proto=>'tcp',
Reuse=>1,
Timeout=>30,
);
#=cut
while(1){
my $tmpsocket = $lsocket->accept;
next unless defined($tmpsocket);
while(){
my $cmd_from_client=$_;
print "cmd from client is: $cmd_from_client\n";
my $rr=`$cmd_from_client` or die "Can not execute the cmd from client\n";
print $tmpsocket $rr;
}
$tmpsocket->shutdown(1);
print "end print\n";
}
方法二
client端
#!/usr/bin/perl
use strict;
use IO::Socket;
use Data::Dumper;
my $lsocket=IO::Socket::INET->new(
PeerAddr=>'127.0.0.1',
PeerPort=>'4321',
Proto=>'tcp',
);
my $byte = $lsocket->send('this is test');
print "Send $byte\n";
my $fromserver;
$lsocket->recv($fromserver,30);
print "get infor from server $fromserver\n";
sleep 2;
$byte=$lsocket->send('test');
$lsocket->recv($fromserver,30);
print "2nd get infor $fromserver\n";
server端
#!/usr/bin/perl
use strict;
use IO::Socket;
my $lsocket=IO::Socket::INET->new(
LocalAddr=>'127.0.0.1',
LocalPort=>'4321',
Listen=>SOMAXCONN,
Proto=>'tcp',
Reuse=>1,
Timeout=>30,
);
my $tmpsocket = $lsocket->accept;
next unless defined($tmpsocket);
my $getcmd;
$tmpsocket->recv($getcmd,12);
print "get your cmd $getcmd\n";
$tmpsocket->send('Server get your cmd');
$tmpsocket->recv($getcmd,10);
print "2nd get your cmd $getcmd\n";
$tmpsocket->send('2nd Server get your cmd');
页:
[1]