- 论坛徽章:
- 0
|
server code:
- #!/usr/bin/perl -w
- #testservers
- use strict;
- my $face=qq~
- ##########################################
- #
- #Perl_CMD
- ##########################################
- ~;
- print $face;
- undef $face;
- my $port=23456;
- my $PF_INET=2;
- my $SOCK_STREAM=1;
- my $proto=getprotobyname("tcp");
- my $ADDR=pack('SnC4x8',$PF_INET,$port,127,0,0,1);
- my $command;
- $|=1; #关闭perl内部缓冲区
- socket(SERVERS,$PF_INET,$SOCK_STREAM,$proto) || die "can't build a socket\n";
- bind(SERVERS,$ADDR) || die "can't bind a SOCK\n";
- listen(SERVERS,2);
- for(;my $paddr=accept(CLIENT,SERVERS);)
- {
- recv(CLIENT,$command,240,0);
- print $command;
- #if($command and $command=~/^\/\//)
- if($command)
- {
- my @turndate=&dir($command);
- foreach my $onedate (@turndate) {
- send (CLIENT,$onedate,0);
- }
- }else{
- print CLIENT "Error CMD format\n";
- }
- }
- close CLIENT;
- sub dir
- {
- my $cmd=shift;
- #$cmd=~s/^\/\/(.*)//;
- my @turncmd=`$cmd`;
- return @turncmd;
- }
复制代码
client code:
- #!/usr/bin/perl -w
- #testclient
- use strict;
- my $port=23456;
- my $PF_INET=2;
- my $SOCK_STREAM=1;
- my $proto=getprotobyname("tcp");
- $|=1;
- my $ADDR=pack('SnC4x8',$PF_INET,$port,127,0,0,1);
- socket(CLIENT,$PF_INET,$SOCK_STREAM,$proto) or die "can't create socket\n";
- connect(CLIENT,$ADDR) or die "can't link\n";
- print "[HuaiHuai]";
- while(1)
- {
- my $cmd=<stdin>;
- send(CLIENT,"$cmd",0);
- while(<CLIENT>)
- {
- print $_;
- };
- print "[HuaiHuai]";
- }
复制代码
网上一段代socket代码,我将其修改了一下,使其能循环读取客户端的命令,然后把结果发送过来.
不知为啥卡在
while(<CLIENT>
{
print $_;
};
这一段代码上了...跳不出来了.请各位帮我解答一下. |
|