免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: CN_long
打印 上一主题 下一主题

Perl完成Web服务器的功能的问题? [复制链接]

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
11 [报告]
发表于 2011-06-15 20:31 |只看该作者
现成的除了dancer 还有其他的吗?最简单的是哪一个。我现在不管性能,能用起来就行。
kingwmj 发表于 2011-06-15 19:47



    一行代码都不需要写就能跑起来的 dancer 还不够简单?

论坛徽章:
0
12 [报告]
发表于 2011-06-15 20:38 |只看该作者
回复 11# zhlong8


  这么好,那我学习一下。我以为这个会很难搞定,看来也不是吗。   谢谢zhlong8

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
13 [报告]
发表于 2011-06-16 09:57 |只看该作者
使用 PSGI 吧,做下载服务太容易了,还性能非常好

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
14 [报告]
发表于 2011-06-16 10:14 |只看该作者
本帖最后由 iakuf 于 2011-06-16 10:26 编辑

最简单的 Perl 静态下载服务器之一
建一个目录叫 Sites 放 HOME ,中间是静态文件就行。只要 root 能指定的地方都可以
  1. plackup -MPlack::App::Directory  -e 'Plack::App::Directory->new(root => "$ENV{HOME}/Sites");'
复制代码

论坛徽章:
0
15 [报告]
发表于 2011-06-17 18:23 |只看该作者
我想用Perl 写一个Web服务器,通过HTTP协议提供文件下载服务,
不知道应该使用什么模块,请高手指点;
我 ...
CN_long 发表于 2011-06-15 14:51



    还是用成熟的开源软件吧 ,这模块不安全

论坛徽章:
0
16 [报告]
发表于 2011-06-18 01:05 |只看该作者
  1. #!/usr/bin/perl
  2. use strict;
  3. use POSIX 'WNOHANG';
  4. use HTTP::Daemon;
  5. use HTTP::Status;

  6. my $quit = 0;
  7. $SIG{CHLD} = sub { while ( waitpid(-1,WNOHANG)>0 ) { } };
  8. $SIG{INT} = sub { $quit++ };

  9. my $daemon = HTTP::Daemon->new(LocalPort=>8080,Reuse=>1) || die "Can't listen on 8080: $!";
  10. print "Please contact me at: <URL:", $daemon->url, ">\n";

  11. while (!$quit) {
  12.       next unless my $connection = $daemon->accept;
  13.       defined (my $child = fork()) or die "Can't fork: $!";
  14.       if ($child == 0) {
  15.           $daemon->close;
  16.           process_req($connection);
  17.       exit 0;
  18.       }
  19.       $connection->close;
  20. }

  21. sub process_req {
  22.     my $sock = shift;
  23.     while (my $request = $sock->get_request) {
  24.         if ($request->method eq 'GET') {
  25.             (my $file = $request->uri->path) =~ s#^/##;
  26.             if ($file) {
  27.                 $sock->send_file_response($file) or $sock->send_error(RC_NOT_FOUND);
  28.             }
  29.             else {
  30.                 $sock->send_file_response('index.html');
  31.             }
  32.         }
  33.     }
  34. }
复制代码
回复 1# CN_long
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP