亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
打印 上一主題 下一主題

ChinaUnix技術(shù)實(shí)踐之三——Perl編程大賽 [復(fù)制鏈接]

論壇徽章:
27
CU大;照
日期:2013-03-13 15:15:08CU大;照
日期:2013-05-20 10:46:38CU大;照
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:24:09CU大;照
日期:2013-09-18 15:24:20CU大牛徽章
日期:2013-09-18 15:24:25CU大;照
日期:2013-09-18 15:24:31CU大;照
日期:2013-09-18 15:24:36CU大;照
日期:2013-09-18 15:24:41CU大;照
日期:2013-09-18 15:24:48CU大;照
日期:2013-09-18 15:24:52處女座
日期:2013-09-27 17:45:43
41 [報(bào)告]
發(fā)表于 2011-02-26 23:33 |只看該作者
本帖最后由 yifangyou 于 2011-02-27 00:00 編輯
  1. ####################################################
  2. #系統(tǒng)環(huán)境:windows xp sp3,centos 5
  3. #編譯環(huán)境:perl, v5.6.1 built for MSWin32-x86-multi-thread,perl, v5.8.8 built for i386-linux-thread-multi
  4. #執(zhí)行:     perl 5.pl "E:\tmp" 或者 perl 5.pl
  5. #題目:
  6. #5. 用最短和優(yōu)的perl代碼對(duì)當(dāng)前目錄下的文件和子目錄按修改時(shí)間進(jìn)行排序。
  7. #
  8. ####################################################

  9. #全局結(jié)果集
  10. our %files;
  11. #讀取目錄名
  12. my $inputdir=$ARGV[0];
  13. if($inputdir eq ""){
  14.         $inputdir=".";
  15. }
  16. #當(dāng)前目錄下的文件和子目錄按修改時(shí)間進(jìn)行排序
  17. get_sub_files($inputdir);

  18. #對(duì)散列的修改時(shí)間字段進(jìn)行排序
  19. printf "%10s %s\n", $files{$_},$_ foreach sort {$files{$a} <=> $files{$b};} keys %files;
  20. #my @f =sort {$files{$a} <=> $files{$b};} keys %files;
  21. #foreach my $f ( @f ){
  22. #   printf "%10s %s\n", $f,$files{$f};
  23. #}
  24. #遞歸獲取該目錄下的所有目錄和文件,以及對(duì)應(yīng)的修改時(shí)間
  25. sub get_sub_files{
  26.   my $dir = shift @_;
  27.   #打開(kāi)目錄
  28.   opendir(DIR,"$dir") || die "Error in opening dir $dir\n";
  29.   my @files =readdir(DIR);
  30.   closedir(DIR);
  31.   #遍歷所有文件和目錄
  32.   for $file (@files){
  33.           #排除當(dāng)前遍歷的目錄和上一級(jí)的目錄
  34.           if(!($file eq "" || $file eq "." || $file eq "..")){
  35.                   my $nextfile="$dir/$file";
  36.             $files{$nextfile}=(stat($file))[9];
  37.             #若是目錄則遞歸變量下一級(jí)
  38.             if(-d $nextfile){
  39.                     get_sub_files($nextfile);
  40.             }
  41.           }
  42.   }
  43. }
復(fù)制代碼

論壇徽章:
27
CU大;照
日期:2013-03-13 15:15:08CU大;照
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大;照
日期:2013-09-18 15:24:09CU大;照
日期:2013-09-18 15:24:20CU大;照
日期:2013-09-18 15:24:25CU大;照
日期:2013-09-18 15:24:31CU大;照
日期:2013-09-18 15:24:36CU大;照
日期:2013-09-18 15:24:41CU大;照
日期:2013-09-18 15:24:48CU大牛徽章
日期:2013-09-18 15:24:52處女座
日期:2013-09-27 17:45:43
42 [報(bào)告]
發(fā)表于 2011-02-26 23:36 |只看該作者
本帖最后由 yifangyou 于 2011-02-26 23:58 編輯
  1. ####################################################
  2. #系統(tǒng)環(huán)境:windows xp sp3,centos 5
  3. #編譯環(huán)境:perl, v5.6.1 built for MSWin32-x86-multi-thread,perl, v5.8.8 built for i386-linux-thread-multi
  4. #執(zhí)行:     perl 6.pl 1,2,3,5,6,7,8,24,25,26,2
  5. #題目:
  6. #6.傳入一串?dāng)?shù)字并返回所有大于平均值的數(shù)字。
  7. #
  8. ####################################################

  9. sub get_big_avg {
  10.                 my $total = 0;
  11.                 #計(jì)算總和
  12.                 for my $n (@_) {
  13.                         $total+=$n;
  14.                 }
  15.                 my $num=@_;
  16.                 #計(jì)算平均值
  17.                 my $avg=$total/$num;
  18.                 @result=();
  19.                 #比較獲取大于平均值的數(shù)字
  20.     for my $n (@_) {
  21.                         if($n > $avg){
  22.                           push(@result,$n);
  23.                         }
  24.     }
  25.     return @result;
  26. }
  27. #例子
  28. #print "result:".join(",",join_int(1,2,3,5,6,7,8))."\n";

  29. #判斷輸入合法性
  30. if(!($ARGV[0]=~/(\d+,)*\d+/)){
  31.         die("please add a number list param like 1,2,3,5,6,7,8\n");
  32. }
  33. #分割成數(shù)組
  34. @input_list=split(/,/,$ARGV[0]);
  35. print "input :".join(",",@input_list)."\n";
  36. print "result:".join(",",get_big_avg(@input_list))."\n";
復(fù)制代碼

論壇徽章:
27
CU大;照
日期:2013-03-13 15:15:08CU大;照
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大;照
日期:2013-09-18 15:24:09CU大牛徽章
日期:2013-09-18 15:24:20CU大;照
日期:2013-09-18 15:24:25CU大;照
日期:2013-09-18 15:24:31CU大牛徽章
日期:2013-09-18 15:24:36CU大;照
日期:2013-09-18 15:24:41CU大;照
日期:2013-09-18 15:24:48CU大;照
日期:2013-09-18 15:24:52處女座
日期:2013-09-27 17:45:43
43 [報(bào)告]
發(fā)表于 2011-02-26 23:37 |只看該作者
本帖最后由 yifangyou 于 2011-02-27 16:22 編輯
  1. ####################################################
  2. #系統(tǒng)環(huán)境:centos 5
  3. #編譯環(huán)境:v5.8.8 built for i386-linux-thread-multi
  4. #執(zhí)行:     perl 7.pl
  5. #題目:
  6. #7.讓用戶不斷猜測(cè)范圍從1到100的秘密數(shù)字,直到猜中為止。程序應(yīng)該以魔術(shù)公式lnt(1+rand 100)來(lái)隨機(jī)產(chǎn)生秘密數(shù)字。
  7. #當(dāng)用戶猜錯(cuò)時(shí),程序應(yīng)相應(yīng)“too high”或者“too low”。
  8. #如果用戶quit或者exit或者鍵入一個(gè)空白行程序就中止。當(dāng)然如果用戶猜到了,程序也應(yīng)該中止。
  9. #
  10. ####################################################

  11. $min_number=1;
  12. $max_number=100;
  13. #獲取隨機(jī)數(shù)
  14. $rand_number=int($min_number+rand($max_number));
  15. print "program have create a randrom num between $min_number and $max_number,enter a number to guess it\n";
  16. print "or enter 'quit' or 'exit' or blank line to exit\n";
  17. $guess_time=0;
  18. while(<STDIN>){
  19.         #獲取輸入并轉(zhuǎn)小寫
  20.         $enter_str = lc($_);
  21.         #去掉空白字符
  22.         $enter_str =~ s/\s//g;
  23.         #判斷是否是整數(shù)
  24.         if(!($enter_str=~/\d+/)){
  25.                 #判斷是否退出
  26.                 if($enter_str eq "exit" || $enter_str eq "quit" || $enter_str eq ""){
  27.                         #退出
  28.                         print("sorry,you lose $guess_time times\n");
  29.                         die("exit ok\n");
  30.                 }
  31.                 print("please enter the number between $min_number and $max_number or enter 'quit' or 'exit' or blank line to exit\n");       
  32.         }else{
  33.                 $guess_time++;
  34.                 #判斷是否相等
  35.                 if($enter_str==$rand_number){
  36.                         #相等則退出
  37.                         print("you win the number is $rand_number,you have guess $guess_time times\n");
  38.                         die("exit ok\n");
  39.                 }else{
  40.                         #提示輸入的是大還是小
  41.                         if($enter_str > $rand_number){
  42.                                 print("too high,you lose $guess_time times\n");
  43.                         }else{
  44.                                 print("too low,you lose $guess_time times\n");
  45.                         }
  46.                 }
  47.         }
  48. }
復(fù)制代碼
第8題
  1. #!/usr/bin/perl
  2. ####################################################
  3. #系統(tǒng)環(huán)境:centos 5
  4. #編譯環(huán)境:perl, v5.8.8 built for i386-linux-thread-multi
  5. #執(zhí)行:     perl 8.pl 或者 perl 8.pl 1234 (端口)
  6. #題目:
  7. #8. 寫一個(gè)簡(jiǎn)單的TCP Echo Server,在linux/unix環(huán)境運(yùn)行,偵聽(tīng)在特定端口,接受用戶的網(wǎng)絡(luò)輸入,并返回同樣的數(shù)據(jù)給對(duì)方,能接受quit命令。
  8. #基本要求:
  9. #(1)無(wú)阻塞IO。
  10. #(2)daemon方式運(yùn)行。
  11. #(3)能接受kill -HUP重啟信號(hào)
  12. # 發(fā)送hup信號(hào)命令:kill -s hup 進(jìn)程號(hào)
  13. #
  14. ####################################################
  15. #use POSIX ();
  16. use FindBin ();
  17. use File::Basename ();
  18. use File::Spec::Functions;
  19. use IO::Socket::INET;
  20. use IO::Select;
  21. use Carp;
  22. our $server;
  23. our $server_port=5555;#默認(rèn)端口
  24. our $zombies = 0;
  25. our $script = File::Basename::basename($0);
  26. our $logfile="/tmp/8.log";
  27. our $read_handles;

  28. # 獲取重新啟動(dòng)命令
  29. our $SELF = "perl ".catfile $FindBin::Bin, $script;
  30. our $isrestart=0; #標(biāo)識(shí)是否重新啟動(dòng)
  31. $SIG{CHLD} = sub {$zombies++};
  32. $SIG{HUP} = sub {
  33.         logs("get HUP,restart server");
  34.         $isrestart=1;
  35.         stopServer();
  36. };

  37. #從參數(shù)獲取端口
  38. if(isPort($ARGV[0])){
  39.         $server_port=$ARGV[0];
  40. }
  41. #deamon方式
  42. daemonize();
  43. #啟動(dòng)服務(wù)
  44. startServer();
  45. exit;
  46. #函數(shù)部分-----------------------------------------------
  47. sub isPort{
  48.         my $port=shift(@_);
  49.         if($port=~/d+/){
  50.                 #判斷端口合法性,必須是整數(shù),并且大于1024
  51.                 if($port > 1024){
  52.                         return $port;
  53.                 }
  54.         }       
  55.         return 0;
  56. }

  57. #記錄日志
  58. sub logs{
  59.         my $msg=shift;
  60.         open(LOGFILE,">>$logfile") or die("cannot open $logfile");
  61.                 my($sec,$min,$hour,$mday,$mon,$year)=localtime();
  62.         print LOGFILE sprintf("%04d-%02d-%02d %02d:%02d:%02d ",($year< 2000?($year+1900):$year),($mon+1),$mday,$hour,$min,$sec),$msg,"\n";
  63.         close(LOGFILE);
  64. }

  65. #deamon方式
  66. sub daemonize {
  67.     chdir '/'                 or croak "Can't chdir to /: $!";
  68.     open STDIN, '/dev/null'   or croak "Can't read /dev/null: $!";
  69.     open STDOUT, '>/dev/null' or croak "Can't write to /dev/null: $!";
  70.     defined(my $pid = fork)   or croak "Can't fork: $!";
  71.     exit if $pid;
  72.     setsid                    or croak "Can't start a new session: $!";
  73.     open STDERR, '>&STDOUT'   or croak "Can't dup stdout: $!";
  74. }

  75. # 停止或者重新啟動(dòng)server
  76. sub stopServer{
  77.         $server->close();
  78.         $read_handles->remove($server);
  79.         # 清除所有的客戶端
  80.         foreach $fd ($read_handles->handles){
  81.                 $read_handles->remove($fd);
  82.                 close $fd;       
  83.         }
  84.         logs("server shutdown");
  85.         # 判斷是否重新啟動(dòng)
  86.         if($isrestart==1){
  87.                 $isrestart=0;
  88.                 # 重新啟動(dòng)
  89.                 logs($SELF, @ARGV);
  90.                 exec($SELF, @ARGV) or die "Couldn't restart: $!\n";
  91.         }
  92.         exit;                    # 退出
  93. }
  94. # 啟動(dòng)server
  95. sub startServer{
  96.         # 創(chuàng)建套接字
  97.         $server = IO::Socket::INET->new(
  98.         LocalPort => $server_port,
  99.         Type    => SOCK_STREAM,
  100.         Reuse   => 1,
  101.         Listen   => 10,# 或者 SOMAXCONN
  102.   Blocking  => 0)# 設(shè)置非阻塞   
  103.         or die "Couldn't be a tcp server on port $server_port: $!\n";

  104.         $read_handles = IO::Select->new();
  105.   $read_handles->add($server);
  106.        
  107.         local  $| = 1;
  108.         logs("server start ok binding port $server_port\n");
  109.         my $fds;
  110.         while (1) {
  111.                 ($fds) =IO::Select->select($read_handles, undef, undef,0 );
  112.                 foreach $fd ( @$fds ){
  113.                          if( $fd== $server ){
  114.                                  if($server->opened){
  115.                                          #server收到新的客戶端連接
  116.                                          my $client = $server->accept();
  117.                 $read_handles->add($client);
  118.               }else{
  119.                               #server被關(guān)閉了
  120.                               stopServer();
  121.                               last;
  122.               }
  123.                          }else{
  124.          $msg = <$fd>;           
  125.          if($msg){
  126.                  #獲取輸入并轉(zhuǎn)小寫
  127.                                   $enter_str = lc($msg);
  128.                                         #去掉回車
  129.                                         chomp $enter_str;
  130.                                         # 判斷是否退出
  131.                                   if($enter_str eq "quit"){
  132.                                           logs("server quit");
  133.                                     stopServer();
  134.                                   }
  135.                  $fd->print($msg);
  136.          }else{
  137.                  # client has finished/closed
  138.                  $read_handles->remove($fd);
  139.                  close $fd;
  140.         }
  141.       }
  142.                 }
  143.         }
  144.         stopServer();
  145. }
復(fù)制代碼
  1. ####################################################
  2. #系統(tǒng)環(huán)境:centos 5
  3. #編譯環(huán)境:perl, v5.8.8 built for i386-linux-thread-multi
  4. #執(zhí)行:     perl 8_client.pl 或者 perl 8_client.pl 127.0.0.1 5555
  5. #題目:
  6. #測(cè)試題目8的客戶端,輸入end:退出客戶端;輸入quit:發(fā)quit命令給服務(wù)端并退出客戶端;
  7. #
  8. ####################################################

  9. use IO::Socket::INET;
  10. our $server_ip="127.0.0.1"; #默認(rèn)IP
  11. our $server_port=5555;      #默認(rèn)端口
  12. $msg="Why don't you call me anymore?\n";

  13. #從參數(shù)獲取server的ip
  14. if(isIP($ARGV[0])){
  15.         $server_ip=$ARGV[0];
  16. }
  17. #從參數(shù)獲取端口
  18. if(isPort($ARGV[1])){
  19.         $server_port=$ARGV[1];
  20. }

  21. $socket = IO::Socket::INET->new(PeerAddr =>$server_ip,
  22. PeerPort  => $server_port,
  23. Proto => "tcp",
  24. Type => SOCK_STREAM,
  25. Timeout=>1)
  26. or die "Couldn't connect to $server_ip:$server_port: $!\n";
  27. $socket->autoflush(1);
  28. print "enter something to send to server,enter 'quit' to shutdown server or enter 'end' to quit client\n";

  29. # 通過(guò)套接字發(fā)送某些東西,
  30. while(<STDIN>){
  31.         #獲取輸入并轉(zhuǎn)小寫
  32.         $enter_str = lc($_);
  33.         #去掉回車
  34.         chomp $enter_str;
  35.        
  36.         #判斷是否退出
  37.         if($enter_str eq "end" || $enter_str eq "quit" ){
  38.                         #退出客戶端
  39.                         print "exit ok\n";
  40.                         if($enter_str eq "quit"){
  41.                                 $socket->print($_);
  42.                                 print "send ok:$_\n";       
  43.                         }
  44.                         last;
  45.         }
  46.         $socket->print($_);       
  47.         print "send ok:$_\n";
  48.        
  49.         # 讀取遠(yuǎn)端響應(yīng)
  50.         $answer = <$socket>;
  51.         if($answer eq ""){
  52.                 last;
  53.         }
  54.         print "answer:$answer\n";
  55. }
  56. # 然后在結(jié)束之后終止聯(lián)接。
  57. close($socket);

  58. sub isPort{
  59.         my $port=shift(@_);
  60.         if($port=~/d+/){
  61.                 #判斷輸入合法性
  62.                 if($port > 1024){
  63.                         return $port;
  64.                 }
  65.         }       
  66.         return 0;
  67. }

  68. sub isIP {
  69.         my $ip=shift(@_);
  70.         if($ip=~/d{3}\.d{3}\.d{3}\.d{3}/){
  71.                 my @ipn=split(".",$ip);
  72.                 for my $n (@ipn){
  73.                         if($n > 255){
  74.                                 return 0;       
  75.                         }
  76.                 }
  77.         }else{
  78.                 return 0;       
  79.         }
  80.   return 1;
  81. }
復(fù)制代碼

論壇徽章:
1
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34
44 [報(bào)告]
發(fā)表于 2011-02-27 09:20 |只看該作者
6
  1. #!/usr/bin/perl -w

  2. my $sum = 0;
  3. my $average;
  4. foreach(@ARGV)
  5. {
  6.         $sum += $_;
  7. }
  8. $average = $sum / @ARGV;
  9. foreach(@ARGV)
  10. {
  11.         if($_ > $average)
  12.         {
  13.                 print $_;
  14.                 print "\n";
  15.         }
  16. }

復(fù)制代碼

論壇徽章:
0
45 [報(bào)告]
發(fā)表于 2011-02-27 09:49 |只看該作者
第一題
  1. sub func{
  2.     $x = ...
  3.     $x;
  4. }
復(fù)制代碼
其他的太難不會(huì)

論壇徽章:
1
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34
46 [報(bào)告]
發(fā)表于 2011-02-27 10:20 |只看該作者
7.
  1. #!/usr/bin/perl -w

  2. my $key = int(1 + rand 100);
  3. print"please input a number\n";
  4. while(my $guess = <STDIN>)
  5. {
  6.         chomp ($guess);
  7.         if( $guess eq "quit" || $guess eq "exit" || $guess =~/\s+/ )
  8.         {
  9.                 exit(1);
  10.         }
  11.         elsif($guess > $key)
  12.         {
  13.                 print "too high,please input again\n";
  14.         }
  15.         elsif($guess < $key)
  16.         {
  17.                 print "too low,please input again\n";
  18.         }
  19.         elsif($guess == $key)
  20.         {
  21.                 print "you got it,bye!\n";
  22.                 exit;
  23.         }
  24. }
復(fù)制代碼

論壇徽章:
1
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34
47 [報(bào)告]
發(fā)表于 2011-02-27 10:51 |只看該作者
本帖最后由 rubylc_unix 于 2011-02-27 11:00 編輯

5.
  1. #!/usr/bin/perl -w
  2. print for ( system "tree -t");
復(fù)制代碼

論壇徽章:
0
48 [報(bào)告]
發(fā)表于 2011-02-27 22:57 |只看該作者
本帖最后由 lkk2003rty 于 2011-03-14 15:14 編輯

1. 請(qǐng)正確的精簡(jiǎn)如下代碼。

sub myfunc {
    # $x = ...;

    if ( $x ) {
        return 1;
    } else {
        return;
    }
}
  1. sub myfunc{
  2.         $x?1:return;
  3. }
復(fù)制代碼
2. $x=()結(jié)果是什么?列表位于標(biāo)量上下文是什么情況?()是不是用來(lái)創(chuàng)建空的list?請(qǐng)解釋原因。
$x是undef
比如$x = (1, 2, 3)會(huì)使x被賦值為列表最后一個(gè)元素3
是的,可以用諸如@x = ();這樣的語(yǔ)句來(lái)清空數(shù)組
3. 1,2,3,5,6,7,8 如何合并成1-3,5-8?
  1. #!/usr/bin/perl -w
  2. my @arr = (1, 2, 3, 5, 6, 7, 8);
  3. my $str = shift( @arr );
  4. my $pre = $str;
  5. my $flag = 0;
  6. foreach(@arr)
  7. {       
  8.         if($_ == $pre + 1)
  9.         {
  10.                 $pre = $_;
  11.                 $flag = 1;
  12.                 next;       
  13.         }
  14.         $str .= "-".$pre.",".$_;
  15.         $pre = $_;
  16.         $flag = 0;
  17. }
  18. if($flag == 1)
  19. {
  20.         $str .= "-".$pre;
  21. }
  22. print "$str\n";
復(fù)制代碼
4.@x=(5,7,9); $x[1]與@x[1]的區(qū)別是什么?
$x[1]是數(shù)組x的第二個(gè)元素7,是一個(gè)標(biāo)量
@x[1]是只有數(shù)組x第二元素7著一個(gè)元素的列表,是一個(gè)列表
5. 用最短和優(yōu)的perl代碼對(duì)當(dāng)前目錄下的文件和子目錄按修改時(shí)間進(jìn)行排序。
  1. #!/usr/bin/perl -w
  2. my $dh;
  3. my %files;
  4. opendir($dh,".") or die "Can't opendir \".\":$!";
  5. foreach my $file(readdir $dh) {
  6.         $files{$file} = (stat($file))[9];
  7. }
  8. foreach my $key(sort ascd(keys %files)) {
  9.         print "$key\n";
  10. }

  11. sub ascd {
  12.         $files{$a} <=> $files{$b};
  13. }
復(fù)制代碼
6.傳入一串?dāng)?shù)字并返回所有大于平均值的數(shù)字。
  1. echo "12 23  24 54 64 3 234  3      2" | perl -ane '$ave = 0; foreach(@F){ $ave += $_; } $ave /= @F; @big = grep {$_ > $ave} @F;print "@big";'
復(fù)制代碼
7.讓用戶不斷猜測(cè)范圍從1到100的秘密數(shù)字,直到猜中為止。程序應(yīng)該以魔術(shù)公式lnt(1+rand 100)來(lái)隨機(jī)產(chǎn)生秘密數(shù)字。當(dāng)用戶猜錯(cuò)時(shí),程序應(yīng)相應(yīng)“too high”或者“too low”。如果用戶quit或者exit或者鍵入一個(gè)空白行程序就中止。當(dāng)然如果用戶猜到了,程序也應(yīng)該中止。
  1. #!/usr/bin/perl -w
  2. use 5.010;
  3. my $num = int (1+rand 100);
  4. print $num."\n";
  5. print "Input your guess number!\n";
  6. while(<>)
  7. {
  8.         given($_)
  9.         {
  10.                 when( /^(quit)?(exit)?\s*\n$/ )
  11.                 {
  12.                         last;
  13.                 }
  14.                 when( /^\s*\d+\s*\n$/ )
  15.                 {
  16.                         chomp;                       
  17.                         if($num < $_)
  18.                         {
  19.                                 print "Too low\n";
  20.                         } elsif($num > $_)
  21.                         {
  22.                                 print "Too high\n";
  23.                         } else {
  24.                                 print "Bingo!U got it!";                       
  25.                         }
  26.                         next;               
  27.                 }
  28.                 print "Error input!\n";       
  29.         }
  30.        
  31. }
復(fù)制代碼
8. 寫一個(gè)簡(jiǎn)單的TCP Echo Server,在linux/unix環(huán)境運(yùn)行,偵聽(tīng)在特定端口,接受用戶的網(wǎng)絡(luò)輸入,并返回同樣的數(shù)據(jù)給對(duì)方,能接受quit命令。
基本要求:
(1)無(wú)阻塞IO。
(2)daemon方式運(yùn)行。
(3)能接受kill -HUP重啟信號(hào)。
代碼太長(zhǎng)了 傳文件上來(lái)吧 測(cè)試環(huán)境是 Linux Zealot 2.6.32.11-99.fc12.i686 #1 SMP Mon Apr 5 16:32:08 EDT 2010 i686 i686 i386 GNU/Linux
服務(wù)器端要以root啟動(dòng)。。。
ser.pl是服務(wù)端的代碼
cli.pl是客戶端的代碼
code.rar (2.04 KB, 下載次數(shù): 50)
總算是完成了。。。。

論壇徽章:
0
49 [報(bào)告]
發(fā)表于 2011-02-28 11:00 |只看該作者
才看到,占個(gè)地方。

1.
  1. sub myfuc {
  2. return unless $x||1;
  3. }
復(fù)制代碼

論壇徽章:
59
2015七夕節(jié)徽章
日期:2015-08-24 11:17:25ChinaUnix專家徽章
日期:2015-07-20 09:19:30每周論壇發(fā)貼之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38榮譽(yù)版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年紀(jì)念徽章
日期:2015-07-20 11:05:27IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-07-20 11:05:34操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:36程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:40數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:432015年辭舊歲徽章
日期:2015-07-20 11:05:44
50 [報(bào)告]
發(fā)表于 2011-02-28 11:06 |只看該作者
回復(fù) 43# yifangyou


    不愧是Perl強(qiáng)人啊。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP