Autoflush
Honza Pazdziora
adelton na informatics.muni.cz
Čtvrtek Červen 20 17:27:48 MEST 2002
On Thu, Jun 20, 2002 at 05:18:07PM +0200, Antonin 'Tonino' Kmoch wrote:
>
> pouzivam komunikaci mezi serverem a klientem za pomoci
> IO::Socket. Prestoze nastavim autoflush(1) nebo dokonce zavolam i metodu
> flush, posledni radek se neodesle (jedine, kdyz na jeho konec pridam "\n",
> coz nechci).
>
> --
> Cast kodu serveru vypada nasledovne:
> my $listen = IO::Socket::INET->new('LocalPort' => $port,
> 'Listen' => 20, 'Proto' => 'tcp', 'Reuse' => 1);
> if (my $connect = $listen->accept) {
> $connect->autoflush(1);
> print $connect "Toto se odesle\n";
> print $connect "Toto ne";
> .
> .
Na 5.004_04 s IO::Socket 1.25 (napriklad erinky) toto funguje.
Testovano pomoci
use IO::Socket;
my $port = 5757;
my $listen = IO::Socket::INET->new('LocalPort' => $port,
'Listen' => 20, 'Proto' => 'tcp', 'Reuse' => 1);
if (my $connect = $listen->accept) {
$connect->autoflush(1);
print $connect "Toto se odesle\n";
print $connect "Toto ne";
sleep 5;
}
__END__
a telnet localhost 5757 ve druhem okne -- vidim
Escape character is '^]'.
Toto se odesle
Toto ne
pak ceka tech 5 sekund a pak teprve dostanu Connection closed by
foreign host.
Navic manova stranka rika
As of VERSION 1.18 all IO::Socket objects have autoflush turned on
by default. This was not the case with earlier releases.
cili neni treba nic nastavovat.
Takze bych si tipnul, ze problem neni v tom, ze by tento kod neposlal,
ale naopak ze druha strana pri cteni ceka az na ten newline.
Cili: jak to testujete Vy?
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
... all of these signs saying sorry but we're closed ...
------------------------------------------------------------------------
Další informace o konferenci Perl