用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - perl代码库

解析http的Header

2012-10-05 作者: 神马举报

[perl]代码库

use Socket;
 
my $proto = getprotobyname('tcp');
 socket(Server,PF_INET,SOCK_STREAM,$proto) || die "socket: $!";
 setsockopt(Server,SOL_SOCKET,SO_REUSEADDR,pack("l",1)) || die "setsocketopt: 

$!";
 bind(Server,sockaddr_in(6799,INADDR_ANY)) || die "bind: $!";
 listen(Server,SOMAXCONN) || die "listen: $!";
 
my $paddr;
 my $waitedpid = 0;
 
sub REAPER {
     $SIG{CHLD} = \&REAPER;  # loathe sysV
     $waitedpid = wait;
 }
 
$SIG{CHLD} = \&REAPER;
 
for ($waitedpid = 0; ($paddr=accept(Client,Server)) || $waitedpid; $waitedpid = 

0, close Client) {
        next if $waitedpid;
        my($port,$iaddr) = sockaddr_in($paddr);
        my $name = gethostbyaddr($iaddr,AF_INET);
        print "Connection from: $name";
 
       spawn (sub {
           while() {
           print $_;
           }
        });
 }
 
sub spawn {
   my $coderef=shift;
 
  my $pid=fork;
   if ($pid) {
      print "begat $pid";
      return; # i'm the parent
   }
   # else i'm the child -- go spawn
 
  open(CLIENT,  "<&Client")   || die "can't dup client to stdin";
   open(CLOUT, ">&Client")   || die "can't dup client to stdout";
  ## open(STDERR, ">&STDOUT") || die "can't dup stdout to stderr";
  exit &$coderef();
 }


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...