作者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