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(<$lsocket>){ ??????? 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,Reuse=>1,Timeout=>30,); #=cut while(1){ ??????? my $tmpsocket = $lsocket->accept; ??????? next unless defined($tmpsocket); ??????? while(<$tmpsocket>){ ??????????????? my $cmd_from_client=$_; ??????????????? print "cmd from client is: $cmd_from_clientn"; ??????????????? my $rr=`$cmd_from_client` or die "Can not execute the cmd from clientn"; ??????????????? print $tmpsocket $rr; ??????? } ??????? $tmpsocket->shutdown(1); ??????? print "end printn"; } 方法二 client端 #!/usr/bin/perl use strict; use IO::Socket; use Data::Dumper; my $lsocket=IO::Socket::INET->new( PeerAddr=>'127.0.0.1',); my $byte = $lsocket->send('this is test'); print "Send $byten"; my $fromserver; $lsocket->recv($fromserver,30); print "get infor from server $fromservern"; sleep 2; $byte=$lsocket->send('test'); $lsocket->recv($fromserver,30); print "2nd get infor $fromservern"; server端 #!/usr/bin/perl use strict; use IO::Socket; my $lsocket=IO::Socket::INET->new( LocalAddr=>'127.0.0.1',); my $tmpsocket = $lsocket->accept; next unless defined($tmpsocket); my $getcmd; $tmpsocket->recv($getcmd,12); print "get your cmd $getcmdn"; $tmpsocket->send('Server get your cmd'); $tmpsocket->recv($getcmd,10); print "2nd get your cmd $getcmdn"; $tmpsocket->send('2nd Server get your cmd'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |