gethttpheader.pl

来自「这是个JAVA开发的WEB邮箱」· PL 代码 · 共 52 行

PL
52
字号
#!/usr/bin/perluse 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(<CLIENT>) {         	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();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?