作者tonini (LPI Course Ongoing)
看板Perl
标题Re: [问题] 请问一下Server-Client的问题
时间Mon Apr 13 21:14:47 2009
感谢板大的解答
目前得到的stdout如下
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
4
4
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
5
5
5
6
6
6
6
6
6
6
6
6
6
7
7
7
7
7
7
7
7
7
7
8
8
8
8
8
8
8
8
8
8
9
9
9
9
9
9
9
9
9
9
IO::Socket::INET=GLOBIO::Socket::INET=GLOB(0x9fc7348)IO::Socket::INET=GLOB(0x9
fc7348)IO::Socket::INET=GLOB(0x9fc7348)IO::Socket::INET=GLOB(0x9fc7348)IO::Soc
ket::INET=GLOB(0x9fc7348)IO::Socket::INET=GLOB(0x9fc7348)IO::Socket::INET=GLOB
(0x9fc7348)IO::Socket::INET=GLOB(0x9fc7348)IO::Socket::INET=GLOB(0x9fc7348)IO:
:Socket::INET=GLOB(0x9fc7348)IO::Socket::INET=GLOB(0x9fc7348)IO::Socket::INET=
GLOB(0x9fc7348)IO::Socket::INET=GLOB(0x9fc7348)IO::Socket::INET=GLOB(0x9fc7348
)IO::Socket::INET=GLOB(0x9fc7348)
IO::Socket::INET=GLOB(0x9fc7348)出现一大堆
所以中间我就砍掉了
Client的程式执行会得到上面这样的STDOUT~
Server的程式出现以下的错误讯息後也停止
Can't locate object method "create" via package "threads" at server.pl line 18.
Server的程式如下
#!/usr/bin/perl
#Server
use threads::shared;
use IO::Socket;
my $server = IO::Socket::INET->new(
LocalPort => 8088,
Type => SOCK_STREAM,
Listen => 32,
Reuse =>1
);
my @array : shared=();
print @array;
while(my $client = $server->accept() ) {
threads->create( "client_handler", $client); <==17行
}
sub client_handler {
my $client = shift;
while(<$client>)
{
push( @array, $_ );
}
print $client foreach( @array );
$client->shutdown(1);
$client->close();
}
话说之前没有改为 my @array : shared=();而是 my @array = ();
没有这样的讯息~
是我client的程式有问题嘛!?(搔头中)
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.72.195.107
1F:→ tonini:自问自答 改写了client的程式後 那个讨厌的GLOB没出现了 04/13 21:37
2F:→ tonini:但是server程式还是停止~ :( 04/13 21:38
3F:→ frank1983:在 server 的程式加上 use threads; 呢... 04/13 21:50
4F:推 LiloHuang:thread 建太多死掉? 还是 SIG_PIPE 的讯号 找找看吧 04/13 22:16