soket编程的问题帮我看看~

soket编程的问题帮我看看~

谢谢先!~
原代码:
#!C:\Perl\bin\perl.exe
use Socket;
$AF_INET=2;
$SOCK_STR=1;
$PROTOCOL=0;
$port=6667;
$PACKIT='S n C4x8';
select(NEWSOCK);
$|=1;
select(STDOUT);
socket(MY_SOCKET,$AF_INET,$SOCK_STR,$PROTOCOL)||die "\n $0:Cannot open socket!";
print "socket successfull opended!\n";
$my_ip_addr=pack($PACKIT,$AF_INET,$port,127.0.0.1
bind(MY_SOCKET,$my_ip_addr) || die "bind fail!";
print "bound to socket!";
listen(MY_SOCKET,5)|| die "cann't listen!";
print "listening..";
while(1){
  $remote=accept(NEWSOCKET,MY_SOCKET) || die "unaccept!";
  $pid=fork || &cleanup;
  if($pid==fork){
  sleep(3);
  print NEWSOCKET "weclome to this server!";
  close NEWSOCKET;
  close MY_SOCKET;
  exit;
}
  else {
  sleep 10;
  close MY_SOCKET;
  close NEWSOCKET;
  exit;
  }
}  
sub cleanup {close NEWSOCKET;close(MY_SOCKET);die "cann't fork!";}
#!/usr/bin/perl
use Socket;
$AF_INET=2;
$SOCK_STR=1;
$PROTOCOL=0;
$port=6667;
$PACKIT='S n C4x8';
select(NEWSOCK);
$|=1;
select(STDOUT);
socket(MY_SOCKET,$AF_INET,$SOCK_STR,$PROTOCOL)||die "\n $0:Cannot open socket!";
print "socket successfull opended!\n";
$my_ip_addr=pack($PACKIT,$AF_INET,$port,127.0.0.1);
bind(MY_SOCKET,$my_ip_addr) || die "bind fail!";
print "bound to socket!";
listen(MY_SOCKET,5)|| die "cann't listen!";
print "listening..";
while(1){
  $remote=accept(NEWSOCKET,MY_SOCKET) || die "unaccept!";
  defined(my $pid=fork()) || &cleanup;
  if($pid==0){
    sleep(3);
    print NEWSOCKET "weclome to this server!";
    close NEWSOCKET;
    close MY_SOCKET;
    exit;
  }
    sleep 10;
    close MY_SOCKET;
    close NEWSOCKET;
    exit;
}
sub cleanup {close NEWSOCKET;close(MY_SOCKET);die "cann't fork!";}
~忘了“);”,呵呵~不好意思
建议程序调试使用 activestate komodo 2.01 专业版进行调试。
komodo 运行有点慢,但非常适合作调试

1. 有很好的语法检查
2. 有很好的调试功能,变量跟踪,单步运行,运行进入模块内部跟踪,出错信息具体,出错行号显示
3. 较强的变量声明检查,部分变量应该是全局变量或是 my,local 变量,比较清楚警告
4. 帮助比较不错

如果感觉慢,那用 perlexpress 或 optiperl 调试也不错。而 perlbuilder 强项在于 CGI 程序编写与调试

perlchina.org 开有 FTP 下载。
不過我還是比較習慣用
perl -c xxx.pl
配合
#!/usr/bin/perl -w
來檢查語法正確與否...


上面的程序我用perl -c 去檢查就知道是少了 ) ;
實際執行後,下面fork的地方也有點問題..
所以我作了點修改...
"$|=1; " 里的“$|”是何意啊,弟兄们?
打开或关闭缓冲
$|=1; 可以用来自动刷新
OK