Re: [問題]請教各位server的問題

看板Perl作者 (~咖啡癮君子~)時間16年前 (2009/06/25 11:33), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《albertliao (~咖啡癮君子~)》之銘言: : ※ 引述《albertliao (~咖啡癮君子~)》之銘言: : : 各位好小弟目前使用socket遇到一個問題 , 以下是我的程式碼, : : 可以看得來我目前只有要接收 client的msg , 但每次從client接收到的msg都是空的,而且之後 : : 就一直執行不斷的印出recv :變成無線迴圈(select變成沒有作用!!) , 請教各位我目前是要不斷接收 : : 來自client的訊息而已, 請問是不是哪有寫錯要注意的地方 : : 謝謝 : : $Socket = new IO::Socket::INET->new(LocalAddr => 'localhost', : : LocalPort => 111, : : Listen => SOMAXCONN, : : Proto => 'tcp', : : Reuse => 1 : : ) or die "Can't bind : $@\n"; : : $s = new IO::Select($Socket); : : $i=1; : : while($i) : : { : : if( $s->can_read ) : : { : : $Socket->recv($text,512); : : print "recv : $text\n"; : : # $i=0; : : } : : } : 感謝各位熱心的協助 , 目前server問題已解決 , 但我仍然無法使用select : 去限定在某個時間內未收到msg就斷線 , 程式如下 , 請各位指點 : 感謝大家 : while( $client=$Socket->accept() ) : { : print "Accepting connection from ", $client->peerhost(), ".\n"; : print $client "Welcome it from Ix_Agent\n"; : #$t1 = threads->create(\&fun_recv); : $s = new IO::Select($client); : $i=1; : $timeout=5; : while($i) : { : if($s->can_read($timeout)) #這行似乎無效果 : { : while ( $_ = <$client> ) : { : chomp; : print "\tClient request: $_\n"; : } : } : else : {$i=0; print "error occur\n";} : } : } 不好意思 找到問題了 原來是使用錯誤 程式改為下面就可以了 謝謝 while($s->can_read($timeout) ) { $_ = <$client>; chomp; print "\tClient request: $_\n"; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.82.195
文章代碼(AID): #1AGl02-y (Perl)
文章代碼(AID): #1AGl02-y (Perl)