因為你使用 <> 來讀數據,所以以行為單位,建議你看看有關 select 的文檔
-------- Original Message -------- Subject: [PerlChina] Re: 求助 socket编程时碰到的问题 From: 周鹏远 <[email protected]> To: [email protected] Date: 17/11/2009 10:47 > 呵呵,的确如此,自己糊涂了 > > 2009/11/17 flw <[email protected] <mailto:[email protected]>> > > 何谈“多”? > 难道每一个换行符不都是你亲手写上去的吗? > > 2009/11/17 小飞侠 <[email protected] > <mailto:[email protected]>> > > > 服务器端代码: > use strict; > use warnings; > use IO::Socket; > > my $sock = IO::Socket::INET->new( > LocalHost => 'localhost', > LocalPort => 2345, > Proto => 'tcp', > Listen => 20, > Reuse => 1, > ) or die "no socket: $!\n"; > print "listening........\n"; > while(1){ > next if ( !( my $session = $sock->accept ) ); > print "begin talking \n"; > while ( my $data = <$session> ) { > print "reived from client : $data"; > print $session "you said $data\n"; > } > close $session; > > } > 客户端代码: > use strict; > use warnings; > use IO::Socket; > > my $sock = IO::Socket::INET->new( > PeerAddr => "localhost:2345", > Proto => 'tcp', > ) or die "no socket: $!\n"; > my $line; > my $message; > while(1){ > $line=<STDIN>; > print $sock $line; > while(<$sock>){ > print "received from server: $_"; > last; > } > > } > > ---测试结果---- > ################################################### > 客户端: > [r...@localhost forkserv-oo-0.01]# perl client.pl > <http://client.pl> > hello > received from server: you said hello > How are you > received from server: > are you listening? > received from server: you said How are you > oh I am puzzled > received from server: > oh no > received from server: you said are you listening? > #################################################### > 服务器端: > listening........ > begin talking > reived from client : hello > reived from client : How are you > reived from client : are you listening? > reived from client : oh I am puzzled > reived from client : oh no > #################################################### > 现象分析: > 似乎服务器返回的消息,每次都会多返回一个空回车符(或者换行符), > 导致消息延迟 > > 困惑中....... > 望高手不吝赐教 > > > > > > > > > -- Best Regards, Anthony WU --~--~---------~--~----~------------~-------~--~----~ 您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。 要在此论坛发帖,请发电子邮件到 [email protected] 要退订此论坛,请发邮件至 [email protected] 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛 -~----------~----~----~----~------~----~------~--~---
